對於 RESTful API 來說重要的一部分內容就是文件,Swagger 3 提供了一套通過程式碼和註解自動生成文件的方法,對於保證 API 文件的即時性有很大的幫助, EP 10 增加了相依套件及設定產出 API 文件。
Table of Contents
Toggle功能簡介
Swagger 是一套基於 OpenAPI 規範的開源工具,可以幫助設計、建構、記錄以及使用 Rest API。
Spring Boot Swagger 3
檔案目錄
./
+- build.gradle
+- src
+- main
+- resources
| +- application.properties
+- java
| +- org
| +- ruoxue
| +- spring_boot_168
| +- config
| +- Swagger3Config.java
Gradle
build.gradle
增加 Springfox Boot Starter 。
修改完後,點右鍵,Gradle -> Refresh Gradle Project 。
buildscript {
group 'org.ruoxue.spring-boot-168'
version = '0.0.1-SNAPSHOT'
ext {
swaggerVersion = '3.0.0'
}
}
dependencies {
implementation "io.springfox:springfox-boot-starter:${swaggerVersion}"
}
組態設定
application.properties
Swagger Spring Boot 增加 Springfox 設定。
springfox.documentation.enabled=true
產品環境時,應把 springfox.documentation.enabled 設為 false。
Swagger3Config.java
Spring Swagger 新增檔案,增加設定。
package org.ruoxue.spring_boot_168.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
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;
@EnableOpenApi
@EnableKnife4j
@Configuration
@ConditionalOnProperty(name = "springfox.documentation.enabled", havingValue = "true")
public class Swagger3Config {
public Swagger3Config() {
}
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("org.ruoxue.spring_boot_168"))
.paths(PathSelectors.any())
.build().pathMapping("/");
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SB 168")
.description("SB 168")
.contact(new Contact("若雪", "https://www.ruoxue.org", "ruoxueorg@gmail.com"))
.version("0.0.1")
.build();
}
}
執行測試
Application.main
在主程式點右鍵執行 Run As -> Java Application。
網址:
http://localhost:10000/swagger-ui/index.html

心得分享
Swagger Spring 即時性的 API 文件,對於前端串接及開發測試,都能提供相當大的幫助,協助同步開發與測試, Swagger UI Spring Boot 提供友善的 API 介面,減少使用 Postman 時,參數變動帶來的不便與困惑。