昨天在 Github 的 dotnet/aspnetcore 儲存庫中發布了一個公告:
Announcement: Swashbuckle.AspNetCore is being removed in .NET 9 #58103
簡單來說就是從 .NET 5 開始到 .NET 8 內建的 Swagger UI 套件 Swashbuckle.AspNetCore 因為沒有積極維護、有許多未解決的問題,甚至不直接支援 .NET 8 ,所以微軟團隊決定使用自己的 Microsoft.AspNetCore.OpenApi 套件 來產生 OpenAPI 文件。雖然沒有介面,但是還有很多成熟的工具所以大家不必擔心。
雖然在 .NET 9 或以上的 ASP.NET Core 專案中沒有內建 Swashbuckle.AspNetCore 套件,但是當然也可以直接手動把他加回來。不過我們這裡來使用看看也很受歡迎的另一個 OpenAPI 介面工具:Scalar
在 .NET 9 的 ASP.NET Core 專案中預設會有以下程式碼,用來產生 OpenAPI 的 JSON 文件:
使用瀏覽器開啟以下連結就可以看到: (註: 需要自行替換 PORT)
在 Program.cs 中加入以下程式碼以啟用 Scalar :
使用瀏覽器開啟以下連結就可以看到 Scalar 介面: (註: 需要自行替換 PORT)
如果是在 .NET 8 中,要和 Swagger UI 同時存在,可以使用下面的方式設定:
參考資料:
Microsoft.Learn - Use openAPI documents
nuget.org - Microsoft.AspNetCore.OpenApi
scalar.com
scalar - .NET Integration
Announcement: Swashbuckle.AspNetCore is being removed in .NET 9 #58103
簡單來說就是從 .NET 5 開始到 .NET 8 內建的 Swagger UI 套件 Swashbuckle.AspNetCore 因為沒有積極維護、有許多未解決的問題,甚至不直接支援 .NET 8 ,所以微軟團隊決定使用自己的 Microsoft.AspNetCore.OpenApi 套件 來產生 OpenAPI 文件。雖然沒有介面,但是還有很多成熟的工具所以大家不必擔心。
雖然在 .NET 9 或以上的 ASP.NET Core 專案中沒有內建 Swashbuckle.AspNetCore 套件,但是當然也可以直接手動把他加回來。不過我們這裡來使用看看也很受歡迎的另一個 OpenAPI 介面工具:Scalar
在 .NET 9 的 ASP.NET Core 專案中預設會有以下程式碼,用來產生 OpenAPI 的 JSON 文件:
var builder = WebApplication.CreateBuilder();
builder.Services.AddOpenApi();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.MapGet("/", () => "Hello world!");
app.Run();
使用瀏覽器開啟以下連結就可以看到: (註: 需要自行替換 PORT)
http://localhost:5261/openapi/v1.json
Scalar 使用示範
先使用 NuGet 安裝 Scalar.AspNetCore 套件,或是使用 .NET CLI 執行以下指令安裝
dotnet add package Scalar.AspNetCore
在 Program.cs 中加入以下程式碼以啟用 Scalar :
using Scalar.AspNetCore;
var builder = WebApplication.CreateBuilder();
builder.Services.AddOpenApi();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
app.MapScalarApiReference();
}
app.MapGet("/", () => "Hello world!");
app.Run();
使用瀏覽器開啟以下連結就可以看到 Scalar 介面: (註: 需要自行替換 PORT)
http://localhost:5261/scalar/
如果是在 .NET 8 中,要和 Swagger UI 同時存在,可以使用下面的方式設定:
using Scalar.AspNetCore;
var builder = WebApplication.CreateBuilder();
builder.Services.AddOpenApi();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.MapOpenApi();
app.MapScalarApiReference(options =>
{
options.OpenApiRoutePattern = "swagger/{documentName}/swagger.json";
options.WithApiKeyAuthentication(_ => { });
});
}
app.MapGet("/", () => "Hello world!");
app.Run();
參考資料:
Microsoft.Learn - Use openAPI documents
nuget.org - Microsoft.AspNetCore.OpenApi
scalar.com
scalar - .NET Integration
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com