AIP文件製作Swashbuckle與Swagger UI

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

 

我只是一棵樹