Swagger 扩展
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
using Microsoft.OpenApi.Models;
using System.Reflection;
public static class SwaggerServiceExtensions
{
public static IServiceCollection AddCustomSwaggerDocumentation(this IServiceCollection services, string title = "API Documentation", string version = "v1")
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc(version, new OpenApiInfo { Title = title, Version = version });
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. exp: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
Array.Empty<string>()
}
});
});
return services;
}
}
使用
builder.Services.AddCustomSwaggerDocumentation("radar", "v1");
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.DocExpansion(DocExpansion.None);
c.DefaultModelsExpandDepth(-1);
c.DisplayRequestDuration();
});