iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Mobile Development

Spring Boot & Android Studio教學系列 第 13

OpenAPI 3.0解析:輕鬆建立和管理RESTful API

  • 分享至 

  • xImage
  •  

OpenAPI 3.0(以前稱為Swagger)是一個用於描述和文檔化RESTful Web API的標準規範。它提供了一種標準的方式來定義API的結構、端點、輸入參數、輸出格式等信息,以便開發人員、客戶端應用程式和其他相關方能夠更容易地理解和使用API。

添加依賴

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.1.0</version>
</dependency>

新增完依賴後他就會自動生成這個專案的API文件,可以在瀏覽器打
http://localhost:8080/api-docs 或是 http://localhost:8080/api-docs.yaml 查看

如上圖所示,可觀性非常差,這時我們叫要與Swagger UI去做結合
OpenAPI 3.0可以視為Swagger的升級版所以已經內建在你面了
我們只需要在瀏覽器打
http://localhost:8080/swagger-ui/index.html

配置檔設定

# 開啟或關閉Swagger UI
springdoc.swagger-ui.enabled=true

# Swagger UI的路徑
springdoc.swagger-ui.path=/swagger-ui.html

# API文檔的URL,默認為"/v3/api-docs"
springdoc.api-docs.path=/v3/api-docs

#“alpha”(按路徑字母數字排序)、“method”(按 HTTP 方法排序)
springdoc.swagger-ui.operations-sorter=method

@OpenAPIDefinition

用來配置整個OpenAPI規範。這個註解位於你的主要應用程序類上,用於定義全局的OpenAPI信息,包括標題、描述、版本等。

@OpenAPIDefinition
@Configuration
public class SpringDocConfig {

    @Bean
    public OpenAPI baseOpenAPI() {
        final String securitySchemeName = "bearerAuth";
        return new OpenAPI()
            .info(
                new Info()
                    .title("API幫助文件")
                    .version("v0.0.1")
                    .description("SpringBoot 3.x application")
            )
            .addSecurityItem(
                new SecurityRequirement()
                    .addList(securitySchemeName)
            )
            .components(
                new Components()
                .addSecuritySchemes(
                    securitySchemeName,
                    new SecurityScheme()
                        .name(securitySchemeName)
                        .type(SecurityScheme.Type.HTTP)
                        .scheme("bearer")
                        .bearerFormat("JWT")
                )
            );
    }
}

.info(...):設置 API 的基本信息,包括標題、版本和描述。

.addSecurityItem(...):添加一個安全需求,這裡使用安全方案的名稱來建立一個需求。

.components(...):添加 OpenAPI 中的元件,這裡是安全方案的定義。你定義了一個名為 "bearerAuth" 的安全方案,它是一個 HTTP 型安全方案,用於 JWT 身份驗證。

@Tag

用於組織和分類 API 操作。
可以將多個操作標記為相同的標籤,以便更容易地在 API 說明中進行分類和導航。
可以用於生成 API 說明中的標籤部分,以幫助開發人員快速找到相關操作。

@Operation

用於定義 API 操作(HTTP 請求),例如 GET、POST、PUT 或 DELETE。
可以指定操作的路徑、描述、參數、輸出等細節。
通常用於生成 API 說明中的操作部分,以幫助開發人員了解如何使用這些操作。

@Schema

用於定義數據模型或對象的結構,例如輸入參數或返回值。
可以指定數據類型、屬性、描述和驗證規則。
可以用於生成 API 說明中的數據模型部分,以幫助開發人員了解數據的結構。


上一篇
@ManyToMany:多對多關係的實現
下一篇
深入探討Spring Boot三層架構:建立高效的應用程式
系列文
Spring Boot & Android Studio教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言