参考地址
说明
以下配置是基于spring-boot项目。
注解
- @Api()用于类;
表示标识这个类是swagger的资源
- @ApiOperation()用于方法;
表示一个http请求的操作
- @ApiParam()用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等)
- @ApiModel()用于类
表示对类进行说明,用于参数用实体类接收
- @ApiModelProperty()用于方法,字段
表示对model属性的说明或者数据操作更改
- @ApiIgnore()用于类,方法,方法参数
表示这个方法或者类被忽略
- @ApiImplicitParam() 用于方法
表示单独的请求参数
- @ApiImplicitParams() 用于方法
包含多个 @ApiImplicitParam
实践
@Api() - 用于类;表示标识这个类是swagger的资源
tags–表示说明
value–也是说明,可以使用tags替代
但是tags如果有多个值,会生成多个list
@Api(value="用户controller",tags={"用户操作接口"}) @RestController public class UserController { }
@ApiOperation() - 用于方法;表示一个http请求的操作
value用于方法描述
notes用于提示内容
tags可以重新分组(视情况而用)
@ApiParam() - 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
name–参数名
value–参数说明
required–是否必填
@Api(value="UserController",tags={"用户接口"}) @RestController public class UserController { @ApiOperation(value="获取用户信息",tags={"获取用户信息"},notes="注意") @GetMapping("/getUserInfo") public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
User user = userService.getUserInfo(); return user; } }
@ApiModel() - 用于类 ;表示对类进行说明,用于参数用实体类接收
value–表示对象名
description–描述
@ApiModelProperty() - 用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
@ApiModel(value="user",description="用户对象") @Data public class User implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelProperty(value="用户名",name="username",example="xingguo") private String username; @ApiModelProperty(value="状态",name="state",required=true) private Integer state; private String password; private String nickName; private Integer isDeleted; @ApiModelProperty(value="ids",hidden=true) private String[] ids; private List<String> idList; }
@ApiOperation("修改用户信息") @PostMapping("/updateUserInfo") public int updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="json格式",required=true) User user){ int num = userService.updateUserInfo(user); return num; }
@ApiIgnore() - 用于类或者方法上,可以不被swagger显示在页面上。
@ApiImplicitParam() - 用于方法,表示单独的请求参数
@ApiImplicitParams() - 用于方法,包含多个 @ApiImplicitParam
name–参数ming
value–参数说明
dataType–数据类型
paramType–参数类型
example–举例说明
@ApiOperation("查询测试") @GetMapping("select") //@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")
@ApiImplicitParams({ @ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"), @ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")}) public void select(){ }
pom依赖
<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>
<!-- 下面这个界面更好看,更好用-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.5</version>
</dependency>
具体配置
(包含分组)
import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * swagger-api 配置 * * @author wzm * @version 1.0.0 * @date 2019/6/15 **/ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class Swagger2 { /** * http://localhost:8085/fabric-net/swagger-ui.html * http://localhost:8085/fabric-net/doc.html */
private static final String SWAGGER_SCAN_BUSINESS_PACKAGE = "com.thyc.fabric.controller.business"; private static final String BUSINESS_VERSION = "1.0.0"; private static final String SWAGGER_SCAN_FABRIC_PACKAGE = "com.thyc.fabric.controller.fabric"; private static final String FABRIC_VERSION = "1.0.0"; @Bean public Docket createBusinessApi() { List<Parameter> pars = new ArrayList<>(); ParameterBuilder ticketPar1 = new ParameterBuilder(); ticketPar1.name("Authorization").description("登录令牌") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(ticketPar1.build()); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(pars) //分组名不支持中文
.groupName("business") .apiInfo(apiBusinessInfo()) .pathMapping("/") .select() // 对所有api进行监控
.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BUSINESS_PACKAGE)) // 错误路径不监控
.paths(Predicates.not(PathSelectors.regex("/error.*"))) // 对根下所有路径进行监控
.paths(PathSelectors.regex("/.*")) .build(); } private ApiInfo apiBusinessInfo() { Contact contact = new Contact("thyc","thyc.com","thyc@email"); return new ApiInfoBuilder() //设置文档的标题
.title("Business") //设置文档的描述->1.Overview
.description("业务模块数据管理") //设置文档的版本信息-> 1.1 Version information
.termsOfServiceUrl("http://localhost:8085/fabric-net") .contact(contact) .version(BUSINESS_VERSION) .build(); } //------------------------------------------------------------------------------------------------------------------
@Bean public Docket createFabricApi() { List<Parameter> pars = new ArrayList<Parameter>(); ParameterBuilder ticketPar1 = new ParameterBuilder(); ticketPar1.name("Authorization").description("登录令牌") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(ticketPar1.build()); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(pars) //分组名不支持中文
.groupName("fabric") .apiInfo(apiFabricInfo()) .pathMapping("/") .select() // 对所有api进行监控
.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_FABRIC_PACKAGE)) // 错误路径不监控
.paths(Predicates.not(PathSelectors.regex("/error.*"))) // 对根下所有路径进行监控
.paths(PathSelectors.regex("/.*")) .build(); } private ApiInfo apiFabricInfo() { Contact contact = new Contact("thyc","thyc.com","thyc@email"); return new ApiInfoBuilder() //设置文档的标题
.title("Fabric-Network") //设置文档的描述->1.Overview
.description("超级账本网络信息管理") //设置文档的版本信息-> 1.1 Version information
.termsOfServiceUrl("http://localhost:8085/fabric-net") .contact(contact) .version(FABRIC_VERSION) .build(); } }