# API 文档
通常我们会采用SpringFox + Swagger 来自动生成文档,但是Swagger 页面不是太友好,所以这里采用SpringFox (opens new window) + Knife4j (opens new window)。
通常SpringFox 只提供符合OpenAPI3.0 (opens new window)的接口,Swagger和Knife4j 都是用来展示的。
# 文档开关
本地开发启动较慢,所以文档默认关,测试环境或者线上想开可以开。
springfox.documentation.enabled=true
springfox.documentation.auto-startup=true
文档接口和页面都是用后端停服务,所以正常访问是通过nginx转发的。
# SpringFox 配置
采用Spring 初始化化Docket 即可。
@Bean
public Docket openApiStore() {
ApiInfo apiInfo = new ApiInfoBuilder().title(seezoonProperties.getDoc().getName())
.description(seezoonProperties.getDoc().getDescription())
.contact(new Contact(seezoonProperties.getDoc().getName(), seezoonProperties.getDoc().getUrl(),
seezoonProperties.getDoc().getAuthor()))
.version(seezoonProperties.getDoc().getVersion()).build();
return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo).select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build()
.enableUrlTemplating(true);
}
# SpringFox + Swagger
本项目不使用这种,这种引入Maven依赖,默认访问地址:http://127.0.0.1:8080/swagger-ui/index.html
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${latest}</version>
</dependency>
# SpringFox + Knife4j
添加依赖即可,默认访问地址:http://127.0.0.1:8080/doc.html
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring</artifactId>
<version>${latest}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${latest}</version>
<exclusions>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</exclusion>
</exclusions>
</dependency>
# 常用注解
这里列举常用的用法即可,不需要弄的太复杂,文档会结合spring mvc的注解,以及JSR-303校验生成详细文档。
WARNING
Spring 接收参数,@RequestParam可以缺省,但是SpringFox,需要读取这个注解才可以生成文档,所以还是加上注解。
# @Api
用于Controller 上,例如:
@Api(tags = "系统参数")
# @ApiOperation
用户Controller 中Rest接口上,例如:
@ApiOperation(value = "分页查询")
# @ApiModel
作用于入参和响应参对象上,例如:
@ApiModel(value = "参数,一般省略value")
# @ApiModelProperty
作用于入参和响应参对象字段上,例如:
@ApiModelProperty(value = "参数名称", required = true)
# @ApiParam
作用于rest接口参数上,通常是@RequestParam接收,例如:
@ApiParam(value = "0:ip,1:用户名")
# 文档安全
需要登录才可以访问,生产环境也可以通过配置关闭文档。