.NET 9 OpenAPI 介紹與教學

目錄


OpenAPI 簡介

OpenAPI(前稱 Swagger)是一種用於描述 RESTful API 的開放標準(Open Specification)。其核心價值在於:

  • 機器可讀:以 JSON 或 YAML 格式描述 API,包括路由(paths)、請求/回應模型(components)、安全機制(securitySchemes)等。

  • 工具生態:可自動生成互動式文件(Swagger UI、ReDoc、Scalar),自動產生 Client SDK,甚至可結合測試/模擬伺服器。

  • 清晰規範:統一規範能讓前後端、跨團隊協作時都依同一份文件開發。

一份典型的 OpenAPI 文件包含:


環境與套件清單

  • .NET 9 SDK

  • IDE:Visual Studio 2022 (17.7+) 或 VS Code

透過 CLI 安裝以下 NuGet 套件:


設定 API 版本管理

Program.cs(Minimal API 範例)中加入:

注意:若使用 Controller API,還需 builder.Services.AddControllers(); 並在 app.MapControllers() 前註冊版本化路由。


產生 多版本 OpenAPI 文件

緊接著,在建置完 builder 之後、呼叫 Build() 之前,動態為每個版本產生描述檔:

上面會在執行時為每個版本(如 v1v2)生成相對應的 JSON:


整合 Swagger UI

app.Environment.IsDevelopment() 中加入:

開啟瀏覽器至 https://<host>/swagger,即可在 UI 下拉選單中切換不同版本。


整合 ReDoc

在同一區塊中,繼續啟用 ReDoc:

開啟 https://<host>/redoc 可看到由 ReDoc 生成的文件。


整合 Scalar UI

最後,以 Scalar 提供更現代化的互動介面:

瀏覽 https://<host>/scalar,側邊欄或下拉即可切換 v1v2……等文件。


自訂與進階功能

  • XML 註解:在 .csproj 中啟用 <GenerateDocumentationFile>true</...>,並於 AddOpenApiDocument 加入 IncludeXmlComments(...)

  • 安全機制:在 OpenAPI 描述中新增 components.securitySchemessecurity,並透過 options.AddSecurity(...) 注入。

  • OAuth2/API Key:Swagger/UI、ReDoc、Scalar 都支援注入授權設定,方便互動測試。

  • UI 客製:調整路由前綴(RoutePrefix)、標題(DocumentTitle)、注入自訂 CSS/JS(InjectStylesheetInjectJavascript)等。


測試與驗證

  1. 執行專案

  2. Swagger UIhttps://localhost:5001/swagger

  3. ReDochttps://localhost:5001/redoc

  4. Scalar UIhttps://localhost:5001/scalar

三者皆應呈現對應版本的互動式 API 文件;可透過下拉或側邊切換版本。


結語

這份教學示範了如何在 .NET 9 中,一步一步

  1. 啟用 API 版本管理

  2. 產生 多版本 OpenAPI JSON

  3. 整合三種主流程式文件前端:

    • Swagger UI

    • ReDoc

    • Scalar UI

Last updated