Springboot集成swagger2

swagger概述:

Swagger是一组围绕OpenAPI规范构建的开源工具,可帮助设计、构建、记录和使用REST API。简单说下,它的出现就是为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要认为的维护这个接口进行测试。

swagger 常用注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiParamImplicitL:一个请求参数
@ApiParamsImplicit 多个请求参数

步骤一:引入依赖包

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

步骤二:配置swagger2的基本信息(与启动类同包)

package com.sinotrans.api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class MySwagger {
	//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    	@Bean
    	 public Docket createRestApi() {
    	 	return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.sinotrans.api.controller"))
                .paths(PathSelectors.any())
                .build();
    	}
    	 //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
   	 private ApiInfo apiInfo() {
       		 return new ApiInfoBuilder()
                //页面标题
                .title("使用 Swagger2 构建RESTful API")
                //创建人
                .contact(new Contact("yaofq", null, null))
                //版本号
                .version("1.0")
                //描述
                .description("用户信息管理以及机构信息管理接口文档")
                .build();
   	 }
}

通过@Configuration注解,表明它是一个配置类,@EnableSwagger2开启swagger2。
apiINfo()配置一些基本的信息。apis()指定扫描的包会生成文档。再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。
select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)。

swagger2实际使用案例

package com.sinotrans.api.controller;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.sinotrans.api.constant.ResultDto;
import com.sinotrans.api.model.BaseUserinfoModel;
import com.sinotrans.api.service.BaseUserinfoManager;
import com.sinotrans.framework.orm.support.PagingInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@Api(value = "BaseUserInfoController", description = "用户信息管理")
@RestController
@RequestMapping("/user")
public class BaseUserInfoController {
	@Autowired
	 BaseUserinfoManager baseUserinfoManager;
	 private static Logger logger = LoggerFactory.getLogger(BaseUserInfoController.class);
	 /**
	  * 取得所有的用户信息
	  * 
	  * @return ResultDto
	  */
	 @ApiOperation(value = "查询所有用户信息", notes = "", httpMethod = "GET",produces = "application/json;charset=UTF-8")
	 @GetMapping("/searchList")
	 public ResultDto getBaseUserInfoList() {
		 logger.info("BaseUserInfoController getBaseUserInfoList start!!!");
		  List<BaseUserinfoModel> list = null;
		  try {
		   list = baseUserinfoManager.getAll();
		  } catch (Exception e) {
		   // TODO: handle exception
		   logger.error("取得全部用户信息失败:" + e);
		  }
		  logger.info("BaseUserInfoController getBaseUserInfoList end,用户总数:" + list.size());
		  return ResultDto.success(list);
	 }
}
/**
  * 根据用户id取得用户信息
  * 
  * @param id
  * @return ResultDto
  */
 @ApiOperation(value = "查询用户信息", notes = "根据用户id查询用户", httpMethod = "GET",produces = "application/json;charset=UTF-8")
 @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "String")
 @GetMapping("/selectById/{id}")
 public ResultDto selectUserInfoById(@PathVariable String id) {
  logger.info("BaseUserInfoController selectUserInfoById start!!!");
  BaseUserinfoModel baseUserinfoModel = null;
  try {
   baseUserinfoModel = baseUserinfoManager.get(id);
  } catch (Exception e) {
   // TODO: handle exception
   logger.error("根据id查询用户信息失败:" + e);
  }
  logger.info("BaseUserInfoController selectUserInfoById end,用户总数:" + baseUserinfoModel);
  return ResultDto.success(baseUserinfoModel);
 }
 /**
  * 分页查询用户信息
  * 
  * @param currentPage
  *            当期页
  * @param pageSize
  *            每页限制行数
  * @return ResultDto
  */
 @ApiOperation(value = "查询用户信息", notes = "分页查询查询用户信息", httpMethod = "GET",produces = "application/json;charset=UTF-8")
 @ApiImplicitParams({ 
 	@ApiImplicitParam(name = "currentPage", value = "当期页", required = true, dataType = "String"),
   	@ApiImplicitParam(name = "pageSize", value = "每页限制行数", required = true, dataType = "String") })
 @GetMapping("/searchListPage")
 public ResultDto selectUserInfoPagingInfo(String currentPage, String pageSize) {
  logger.info("BaseUserInfoController selectUserInfoPagingInfo start!!!");
  String orderBy = "Id desc";
  List<BaseUserinfoModel> list = null;
  PagingInfo pagingInfo = new PagingInfo();
  // List<FilterCondition> filterCond = new ArrayList<FilterCondition>();
  // FilterCondition filterCondition = new FilterCondition();
  try {
   pagingInfo.setCurrentPage(Integer.valueOf(currentPage));
   pagingInfo.setPageSize(Integer.valueOf(pageSize));
   list = baseUserinfoManager.findByCondition(orderBy, pagingInfo, null);
  } catch (Exception e) {
   // TODO: handle exception
   logger.error("分页查询失败:" + e);
  }
  logger.info("BaseUserInfoController selectUserInfoPagingInfo end,用户总数:" + list.size());
  return ResultDto.success(list);
 }

步骤四:查看ui界面

访问:http://[ip]:[端口]/swagger-ui.html
在这里插入图片描述

注意事项:

swagger要屏蔽某些controller或者requestMapping,只需在相应的类上或者方法上加@ApiIgnore

参考文献:

https://blog.csdn.net/qq_22860341/article/details/81119796

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值