外观
Core Swagger
NetGet 下载 Swashbuckle.AspNetCore
- 无版本
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSwaggerGen(s =>
{
s.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Api", Version = "v1" });
string basepath = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
string xmlpath = Path.Combine(AppContext.BaseDirectory, basepath);
s.IncludeXmlComments(xmlpath); //注入函数注释
});
} public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
app.UseSwaggerUI(s => s.SwaggerEndpoint("/swagger/v1/swagger.json", "My Api v1"));
}- 多版本管理
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.AspNetCore.Mvc.Versioning;
private IApiVersionDescriptionProvider provider;
public void ConfigureServices(IServiceCollection services)
{
services.AddApiVersioning(option =>
{
option.DefaultApiVersion = new ApiVersion(1, 0);
option.ApiVersionReader = new HeaderApiVersionReader("api-version");
})
.AddVersionedApiExplorer(option =>
{
option.GroupNameFormat = "'v'VV";
option.AssumeDefaultVersionWhenUnspecified = true;
});
this.provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
services.AddSwaggerGen(options =>
{
foreach (ApiVersionDescription desc in provider.ApiVersionDescriptions)
{
options.SwaggerDoc(desc.GroupName,
new Microsoft.OpenApi.Models.OpenApiInfo
{
Version = desc.GroupName,
Title = "Ting Api",
Description = "接口说明文档",
});
string xmlpath = Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml");
options.IncludeXmlComments(xmlpath); //注入函数注释
}
});
services.AddControllers();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(s =>
{
foreach (var desc in this.provider.ApiVersionDescriptions)
{
s.SwaggerEndpoint($"/swagger/{desc.GroupName}/swagger.json", $"{desc.GroupName.ToUpperInvariant()}");
}
});