共用方式為


使用 openAPI 文件

使用 Swagger UI 進行本機臨機操作測試

根據預設,Microsoft.AspNetCore.OpenApi 套件不會隨附內建支援,以支援將 OpenAPI 文件視覺化或與該文件互動。 用於視覺化或與 OpenAPI 文件互動的熱門工具包括 Swagger UIReDoc。 Swagger UI 和 ReDoc 可以透過數種方式整合在應用程式中。 Visual Studio 和 VS Code 等編輯器提供延伸模組和內建體驗,以針對 OpenAPI 文件進行測試。

Swashbuckle.AspNetCore.SwaggerUi 套件提供 Swagger UI Web 資產組合,以用於應用程式。 此套件可以用來呈現所產生文件的 UI。 若要進行此設定:

  • 安裝 Swashbuckle.AspNetCore.SwaggerUi 套件。
  • 透過參考稍早註冊的 OpenAPI 路由來啟用 swagger-ui 中介軟體。
  • 為了限制資訊洩漏和安全性弱點,只在開發環境中啟用 Swagger UI
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.OpenApi;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;

var builder = WebApplication.CreateBuilder();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapOpenApi();
if (app.Environment.IsDevelopment())
{
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/openapi/v1.json", "v1");
    });

}

app.MapGet("/", () => "Hello world!");

app.Run();

將 Scalar 用於互動式 API 文件

Scalar 是 OpenAPI 的開放原始碼互動式文件 UI。 Scalar 可以與 ASP.NET Core 所提供的 OpenAPI 端點整合。 若要設定純量,請安裝 Scalar.AspNetCore 套件。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.OpenApi;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using Scalar.AspNetCore;

var builder = WebApplication.CreateBuilder();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapOpenApi();

if (app.Environment.IsDevelopment())
{
    app.MapScalarApiReference();
}

app.MapGet("/", () => "Hello world!");

app.Run();

Lint 透過 Spectral 產生的 OpenAPI 文件

Spectral 是開放原始碼 OpenAPI 文件 Linter。 Spectral 可以納入應用程式組建中,以驗證產生的 OpenAPI 文件品質。 根據套件安裝指示安裝 Spectral。

若要利用 Spectral,請安裝 Microsoft.Extensions.ApiDescription.Server 套件以啟用建置階段 OpenAPI 文件產生。

在應用程式的 .csproj 檔案中設定下列屬性,以在建置階段啟用文件產生:

<PropertyGroup>
    <OpenApiDocumentsDirectory>$(MSBuildProjectDirectory)</OpenApiDocumentsDirectory>
    <OpenApiGenerateDocuments>true</OpenApiGenerateDocuments>
</PropertyGroup>

執行 dotnet build 以產生文件。

dotnet build

使用下列內容建立 .spectral.yml 檔案。

extends: ["spectral:oas"]

在產生的檔案上執行 spectral lint

spectral lint WebMinOpenApi.json
...

The output shows any issues with the OpenAPI document. For example:

```output
1:1  warning  oas3-api-servers       OpenAPI "servers" must be present and non-empty array.
3:10  warning  info-contact           Info object must have "contact" object.                        info
3:10  warning  info-description       Info "description" must be present and non-empty string.       info
9:13  warning  operation-description  Operation "description" must be present and non-empty string.  paths./.get
9:13  warning  operation-operationId  Operation must have "operationId".                             paths./.get

✖ 5 problems (0 errors, 5 warnings, 0 infos, 0 hints)

若要了解如何在 .NET 6、7 或 8 的基本 API 中使用產生的 OpenAPI 文件,請參閱 Swagger 與 NSwag 概觀