Swagger 配置接口注释
Program.cs 中配置
//生成接口注释
builder.Services.AddSwaggerGen(a =>
{
a.SwaggerDoc("v1", new OpenApiInfo { Title = "练习 测试", Version = "第一版", Description = "描述吧" });
var file = Path.Combine(AppContext.BaseDirectory, "ouyang.WebApi.xml");
a.IncludeXmlComments(file, true);
});
右键项目,选择属性,生成,输出:选择文档文件
Swagger配置封装
通用版本,接口注释
using Microsoft.OpenApi.Models;
namespace ouyang.WebApi.Untility.SwaggerExt
{
/// <summary>
/// Swagger拓展
/// 设成静态方法this调用,在Program.cs中参数可提前
/// </summary>
public static class CustomSwaggerExt
{
/// <summary>
/// 配置Swagger
/// </summary>
/// <param name="services"></param>
public static void AddSwaggerExt(this IServiceCollection services)
{
services.AddEndpointsApiExplorer();
//builder.Services.AddSwaggerGen();
services.AddSwaggerGen(a =>
{
//获取通用版本信息
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
a.SwaggerDoc(version, new OpenApiInfo()
{
Title = $"朝夕测试平台Api文档",
Version = version,
Description = $"通用版本的CoreApi版本{version}"
});
});
//接口注释文件文章
var file = Path.Combine(AppContext.BaseDirectory, "ouyang.WebApi.xml");
a.IncludeXmlComments(file, true);
});
}
/// <summary>
/// Swagger版本控制
/// </summary>
/// <param name="app"></param>
public static void UseSwaggerExt(this WebApplication app)
{
app.UseSwagger();
//app.UseSwaggerUI();
app.UseSwaggerUI(c =>
{
foreach (var version in typeof(ApiVersions).GetEnumNames())
{
c.SwaggerEndpoint($"https://localhost:7123/swagger/{version}/swagger.json", $"朝夕测试【{version}】版本");
}
});
}
}
}
枚举 Swagger版本号
namespace ouyang.WebApi.Untility.SwaggerExt
{
/// <summary>
/// 枚举,表示不同版本
/// </summary>
public enum ApiVersions
{
/// <summary>
/// V1:开发版
/// </summary>
V1,
/// <summary>
/// V2:测试版
/// </summary>
V2,
/// <summary>
/// V3:适用版
/// </summary>
V3
}
}
Program.cs中调用
//CustomSwaggerExt设成静态方法this调用,在Program.cs中参数可提前
#region Swagger配置
//builder.Services.AddEndpointsApiExplorer();
//builder.Services.AddSwaggerGen();
//CustomSwaggerExt.AddSwaggerExt(builder.Services);、
builder.Services.AddSwaggerExt();
#endregion
#region Swagger 版本控制
//app.UseSwagger();
//app.UseSwaggerUI();
//CustomSwaggerExt.UseSwaggerExt(app);
app.UseSwaggerExt();
#endregion