Visual Studio
ASP.NET Core Web API
Swashbuckle 生成符合OpenAPI規範的JSON文件
Swagger UI 用OpenAPI的JSON文件轉換成HTML
1. 套件管理員安裝 Swashbuckle.AspNetCore
2. 加入參考..\Program.cs
// Swagger 生成器--開始--
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "ApiName API",
Version = "v1",
Description = "ApiName API"
});
// // 依需求可增加XML註釋
// var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
// var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
// if (File.Exists(xmlPath))
// {
// c.IncludeXmlComments(xmlPath);
// }
//
// // 依需求可增加JWT token驗證1
// c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
// {
// Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
// Name = "Authorization",
// In = ParameterLocation.Header,
// Type = SecuritySchemeType.ApiKey,
// Scheme = "Bearer"
// });
//
// // 依需求可增加JWT token驗證2
// c.AddSecurityRequirement(new OpenApiSecurityRequirement
// {
// {
// new OpenApiSecurityScheme
// {
// Reference = new OpenApiReference
// {
// Type = ReferenceType.SecurityScheme,
// Id = "Bearer"
// }
// },
// new string[] {}
// }
// });
});
// Swagger 生成器--結束--
// 是否要開啟 Swagger (正是機安全考量須關閉)--開始--
// 讀取 appsettings.json 中的 SwaggerSettings 配置
var swaggerEnabled = app.Configuration.GetValue<bool>("SwaggerSettings:EnableSwagger");
if (swaggerEnabled)
{
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiName API v1"));
}
// 是否要開啟 Swagger (正是機安全考量須關閉)--結束--
3. 個人化微調
不顯示的API接口可加入 [ApiExplorerSettings(IgnoreApi = true)]
[ApiExplorerSettings(IgnoreApi = true)]
[HttpGet]
public IActionResult GetImport(){
...
}
4. 如果有開啟可增加XML註釋
可能需在修改 ..\APIName.csproj
a.啟用了XML文檔文件的生成。
b.抑制特定的編譯器警告
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
5. 開啟網頁測試
https://localhost:7244/swagger/index.html
我只是一棵樹