在這裡記錄一下在 Spring Cloud 裡的其中一個微服務中加入 Swagger 的過程
目標是要在 course_mysql
裡面加入 Swagger
# Step1:加入依賴
在 course_mysql
的 pom.xml
文件裡面加入 Swagger 的 dependency
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<!-- 版本3.0.0的會有bug, swagger-ui.html 刷新不出來-->
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
<!-- 版本3.0.0的會有bug, swagger-ui.html 刷新不出來-->
</dependency>
除了 Swagger 版本的問題,另一個可能會出 bug 的地方是 spring boot 的版本,在同一個 pom.xml 文件中,我把 sprint boot 的 version 降低到 2.6.8
,最後才能運行 Swagger 成功(找 bug 找了個半天 T__T)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
還有一個可能會發生的 error(忘了是哪個,當時沒記下來)
可以在 application.properties
加上
spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
# Step 2: SwaggerConfig
我在 course_mysql
裡 的 一個 package config
裡面,新增一個 SwaggerConfig
的 class 專門配置 Swagger
基本上改一改 basePackagey 就行
// 首先一定要加上 @EnableSwagger2 | |
@Configuration | |
@EnableSwagger2 | |
public class SwaggerConfig { | |
@Bean | |
public Docket createRestApi() { | |
return new Docket(DocumentationType.SWAGGER_2) // DocumentationType.SWAGGER_2 固定的,代表 swagger2 | |
// .groupName ("分布式任务系统") // 如果配置多个文档的时候,那么需要配置 groupName 来分组标识 | |
.apiInfo(metaData()) // 用于生成 API 信息 | |
.select() //select () 函数返回一个 ApiSelectorBuilder 实例,用来控制接口被 swagger 做成文档 | |
.apis(RequestHandlerSelectors.basePackage("com.example.course_mysql")) // 用于指定扫描哪个包下的接口 | |
.paths(PathSelectors.any())// 选择所有的 API, 如果你想只为部分 API 生成文档,可以配置这里 | |
.build(); | |
} | |
private ApiInfo metaData() { | |
return new ApiInfoBuilder() | |
.title("Course Service") // 可以用来自定义 API 的主标题 | |
.description("this api allows you to find student, course, and enrollment info") // 可以用来描述整体的 API | |
.termsOfServiceUrl("") // 用于定义服务的域名 | |
.version("1.0") // 可以用来定义版本。 | |
.build(); // | |
} | |
} |
# Step 3 : localhost:8000/swagger-ui.html
只需要在 localhost:8000 後面加上 swagger-ui.html 就可以顯示了
(因為我是用 spring cloud, 所以不是 localhost:8000
然後就可以自己在 Swagger 試著做各種的請求囉~~
other resources
Spring Boot2.0 从青铜到王者 - IDEA、JPA、Mybatis、分布式事务、springboot_哔哩哔哩_bilibili
-End-