1.Swagger简介
后端时代:前端只用管理静态页面;html等静态资源交给后端通过模板引擎进行渲染
前后端分离时代:
- 后端:控制层controller、服务层service、数据访问层dao
- 前端:前端控制层、视图层
- 前后端交互:通过API接口
- 前后端相对独立,松耦合,甚至可以部署在不同的服务器上
- 随之产生的问题:前后端联调,前端人员和后端人员无法做到及时协商,尽早解决
解决方案:
- 首先指定schema(计划),实时更新最新的API,降低集成风险
- 早些年:指定word计划文档
- 前后端分离:
- 前端测试后端接口数据是否正确:postman
- 后端提供接口,需要实时更新最新的消息和改动
于是Swagger应运而生。
2.导入依赖:
这里以springfox来使用:SpringFox是 spring 社区维护的一个项目(非官方),帮助使用者将 swagger2 集成到 Spring 中。常常用于 Spring 中帮助开发者生成文档,并可以轻松的在spring boot中使用。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
3.编写配置类
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket desertsApi(){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.atxins.controller"))
.paths(PathSelectors.any())
.build()
.groupName("default")
.enable(true);
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("微服务(GMS) API说明文档")
.description("微服务(GMS) API说明文档")
.contact(new Contact("GMS", "https://blog.csdn.net/Achard_Wang", "787579251@qq.com"))
.termsOfServiceUrl("https://www.zybuluo.com/mdeditor#2281023-full-reader")
.version("1.0")
.build();
}
}
对应配置的结果:
注意:desertApi()的apis修改为自己的controller的包路径。
注意:
SpringBoot更新到2.6.0启动报错 Failed to start bean ‘documentationPluginsBootstrapper‘ 问题处理
原因:Spring Boot 2.6.0开始使用基于PathPatternParser的路径匹配,而Springfox版本一直没有更新还是使用的AntPathMatcher导致了这个问题。
解决:修改yml文件,将SpringBoot路劲匹配模式修改为AntPathMatcher就可以了,配置如下:
spring:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
4.基本使用
浏览器访问Swagger UI即可访问到初始页面。