Springboot整合Swagger学习笔记
1:在pom文件中导入下面的依赖
<dependency>
<groupId>com.didispacegroupId>
<artifactId>spring-boot-starter-swaggerartifactId>
<version>1.4.1.RELEASEversion>
dependency>
2:需要在springboot的main方法类上面注解上标签@EnableSwagger2Doc
package com.suiyu.swagger
import com.didispace.swagger.EnableSwagger2Doc
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@EnableSwagger2Doc
@SpringBootApplication
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args)
}
}
3:在全局的配置yml文件中配置下面的信息
swagger:
enabled: true
title: swagger的标题
description: swagger的描述
version: swagger的版本
license: swagger的许可证
license-url: swagger的许可证地址
terms-of-service-url: 服务条款url
contact:
name: 维护人姓名
email: 维护人邮箱
url: 维护人url
base-package: swagger的扫描包
base-path: 需要处理的基础URL规则
4:一些常用的注解
4.1:@Api 这个注解用在controller接口上面的,有下面的这些属性
属性名称 |
备注 |
value |
url的路径值 |
tags |
对当前controller接口的标签,如果设置这个值、value的值会被覆盖 |
description |
对当前controller接口的描述 |
basePath |
基本路径可以不配置 |
position |
如果配置多个Api 想改变显示的顺序位置 |
produces |
For example, “application/json, application/xml” |
consumes |
For example, “application/json, application/xml” |
protocols |
Possible values: http, https, ws, wss. |
authorizations |
高级特性认证时配置 |
hidden |
配置为true 将在文档中隐藏 |
@Api(tags = "图书管理的controller")
public class BookController {
}
4.2:@ApiOperation 用在方法上,说明方法的作用,每一个url资源的定义
属性名称 |
备注 |
value |
当前方法的简单描述 |
tags |
方法上面最好不要用这个属性(作用跟controller上面使用一样) |
notes |
实现这个方法需要注意的事项、方法的一些说明 |
extensions |
扩展属性 |
position |
如果配置多个Api 想改变显示的顺序位置 |
produces |
For example, “application/json, application/xml” |
consumes |
For example, “application/json, application/xml” |
protocols |
Possible values: http, https, ws, wss. |
authorizations |
高级特性认证时配置 |
hidden |
配置为true 将在文档中隐藏 |
response |
返回的对象 |
responseContainer |
这些对象是有效的 “List”, “Set” or “Map”.,其他无效 |
httpMethod |
“GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”,当在RequestMapping上面写上了Method的时候那么就不需要写 |
code |
http的状态码 默认 200 |
使用demo:
@ApiOperation(value = "获图书细信息", notes = "根据url的id来获取详细信息")
4.3:@ApiImplicitParam 用来描述参数的信息
属性 |
取值 |
作用 |
paramType |
|
查询参数类型 |
|
path |
以地址的形式提交数据 |
|
query |
直接跟参数完成自动映射赋值 |
|
body |
以流的形式提交 仅支持POST |
|
header |
参数在request headers 里边提交 |
|
form |
以form表单的形式提交 仅支持POST |
dataType |
|
参数的数据类型 只作为标志说明,并没有实际验证 |
|
Long |
|
|
String |
|
|
其他.. |
|
name |
|
接收参数名 |
value |
|
接收参数的意义描述 |
required |
|
参数是否必填 |
|
true |
必填 |
|
false |
非必填 |
defaultValue |
|
默认值 |
使用demo:
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long", paramType = "path")
4.4:@ApiImplicitParams 如果一个方法有多个的参数,那么可以使用@ApiImplicitParams注解将@ApiImplicitParam注解包起来,表示多个参数
使用demo:
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long", paramType = "path"),
@ApiImplicitParam(name = "book", value = "图书实体book", required = true, dataType = "Book")
})
4.5:@ApiResponse 用在方法上面,自定义返回的状态吗的一些信息
属性名称 |
备注 |
code |
http的状态码 |
message |
造成这个状态吗的原因描述 |
response |
默认响应类 Void |
reference |
参考ApiOperation中配置 |
responseHeaders |
参考 ResponseHeader 属性配置说明 |
responseContainer |
参考ApiOperation中配置 |
使用demo:
@ApiResponses({@ApiResponse(code = 400, message = "Invalid Order")})
4.6:@ApiResponses 用于表示一组@ApiResponse
使用demo:
@ApiResponses({@ApiResponse(code = 400, message = "Invalid Order"), @ApiResponse(code = 404, message = "not find")})
属性名称 |
备注 |
name |
响应头名称 |
description |
头描述 |
response |
默认响应类 Void |
responseContainer |
参考ApiOperation中配置 |
使用demo:
@ResponseHeader(name="head1",description="response head conf")
4.8:其他
@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候;
@ApiModelProperty:描述一个model的属性。