1、将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;
2、当接口更新之后,只需要修改代码中的Swagger描述就可以实时生成新的接口文档了,从而规避了接口文档老旧不能使用的问题;
3、通过Swagger页面,可以直接进行接口调用,降低了项目开发阶段的调试成本(在线测试)
1、添加swagger相关依赖:
2、Swagger的configuration配置:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
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;
import java.util.ArrayList;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean //配置docket以配置Swagger具体参数
public Docket docket(Environment environment) {
//动态配置项目所属什么环境时来显示swagger
// 设置要显示swagger的环境
// Profiles of = Profiles.of("dev", "test");
// 判断当前是否处于该环境
// 通过enable()方法接收此参数判断是否要显示
// boolean flag = environment.acceptsProfiles(of);
return new Docket(DocumentationType.SWAGGER\_2)
//配置文档页面信息
.apiInfo(apiInfo())
//动态配置是否启用Swagger,如果是false,在浏览器将无法访问
// .enable(flag)
//配置分组
//配置多个分组只需要配置多个docket即可,不同docket有不同组名
.groupName("组名")
//构建Docket时通过select()方法扫描接口
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
//1、扫描所有,项目中的所有接口都会被扫描到:any()
//2、不扫描接口:none()
//3、扫描方法上的注解:withMethodAnnotation(),
// 如withMethodAnnotation(GetMapping.class)只扫描get请求
//4、扫描类上的注解,参数是一个反射对象:withClassAnnotation(),
// 如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
//5、指定要扫描的包路径:basePackage(final String basePackage)
//例:.apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
.apis(RequestHandlerSelectors.basePackage("控制类所在包名"))
//配置如何通过path过滤,即这里只扫描请求以/controller开头的接口
//1、任何请求都扫描:any()
//2、任何请求都不扫描:none()
//3、通过正则表达式控制:regex(final String pathRegex)
//4、通过ant()控制:ant(final String antPattern)
//例:.paths(PathSelectors.ant("/controller/\*\*"))
.paths(PathSelectors.ant("控制类中@RequestMapping中的路径"))
.build();
}
//配置文档信息
private ApiInfo apiInfo() {
Contact contact = new Contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱");
return new ApiInfo(
"Swagger的学习笔记", // 标题
"如何配置Swagger", // 描述
"v1.0", // 版本
"http://terms.service.url/组织链接", // 组织链接
contact, // 联系人信息
"Apach 2.0 许可", // 许可
"许可链接", // 许可连接
new ArrayList<>()// 扩展
);
}
//配置分组一
@Bean
public Docket docket1() {
return new Docket(DocumentationType.SWAGGER\_2).groupName("group1");
}
//配置分组二
@Bean
public Docket docket2() {
return new Docket(DocumentationType.SWAGGER\_2).groupName("group2");
}
}
3、测试访问:
http://localhost:8080/swagger-ui.html
用于标注一个Controller
属性
描述
value
url的路径值
tags
如果设置这个值、value的值会被覆盖
description
对api资源的描述
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 将在文档中隐藏
用于对一个操作或HTTP方法进行描述
属性
描述
value
url的路径值
tags
如果设置这个值、value的值会被覆盖
description
对api资源的描述
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 将在文档中隐藏
response
返回的对象
responseContainer
这些对象是有效的 "List", "Set" or "Map".,其他无效
httpMethod
"GET","HEAD","POST","PUT","DELETE","OPTIONS"and"PATCH"
code
http的状态码 默认 200
extensions
扩展属性
用于请求方法中,定义api参数的注解
属性
描述
name
属性名称
value
属性值
defaultValue
默认属性值
allowableValues
可以不配置
required
是否属性必填
access
不过多描述
allowMultiple
默认为false
hidden
隐藏该属性
example
举例子
(1)、@ApiImplicitParams:用在请求的方法上,包含一组参数说明
(2)、@ApiImplicitParam:对单个参数的说明
属性
描述
name
参数名
value
参数的说明、描述
required
参数是否必须必填
paramType
参数放在哪个地方
query --> 请求参数的获取:@RequestParam
header --> 请求参数的获取:@RequestHeader
path(用于restful接口)--> 请求参数的获取:@PathVariable
body(请求体)--> @RequestBody User user
form(普通表单提交)
dataType
参数类型,默认String,其它值dataType="Integer"
defaultValue
参数的默认值
(1)、@ApiModel:用于描述一个Model的信息
(2)、@ApiModelProperty:用来描述一个Model的属性。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章