从零开始 Spring Boot 8:Swagger
图源:简书 (jianshu.com)
后台开发最常见的是开发Restfull接口,相应的,为了和前端沟通就可能需要定义和维护一套接口文档,编写和维护文档往往需要花费相当的时间和精力。
Swagger 是一套定义良好的接口文档规范,可以借助相关的API和工具,根据项目代码自动生成接口文档。
下面我们就给之前做的示例项目my_first_app 用Swapper 添加上接口文档的支持。
你可以从learn_spring_boot (github.com)获取之前的项目代码。
添加依赖
首先添加相关依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
最新的版本是3.0.0 。
添加配置
为了能让工具在指定包内检索接口,以及设置作者等相关展示信息,需要通过添加配置类来设置:
package cn.icexmoon.my_first_app.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket docket(){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo()).enable(true)
.select()
.apis(RequestHandlerSelectors.basePackage("cn.icexmoon.my_first_app"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("XX项目接口文档")
.description("XX项目描述")
.contact(new Contact("作者", "作者URL", "作者Email"))
.version("1.0")
.build();
}
}
访问
现在启动项目,并访问http://localhost:8080/swagger-ui/index.html 应该就能看到在线接口文档了:
如果遇到Failed to start bean documentationPluginsBootstrapper 等问题,可能是高版本Spring Boot 的兼容性问题,可以添加以下配置解决:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
谢谢阅读。
你可以在learn_spring_boot (github.com)找到本篇文章的最终示例代码。
参考资料
|