前言:本次学习都是在VS2022上进行,其它VS版本实现可能存在差异,仅自己学习记录。
Swagger配置方法:
一、【解决方法资源管理器】--【右击项目名称】-【属性】-【生成】-【输出】
选中文档文件-生成包含API文档的文件,默认地址为bin\Debug\net6.0\xxx.xml,也可以自定义地址,在指定地址新建个空的xml文件即可。
二、修改program.cs代码
using System.Reflection;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
#region 设置API文档信息
options.SwaggerDoc("v1", new OpenApiInfo
{
// {ApiName} 定义成全局变量,方便修改
Version = "v1",
Title = $"接口文档——Net 6",
Description = $"HTTP API v1",
});
options.OrderActionsBy(o => o.RelativePath);
#endregion
#region 引用接口注释
// using System.Reflection;
var basePath = AppContext.BaseDirectory;
DirectoryInfo d = new(basePath);
FileInfo[] files = d.GetFiles("*.xml");
var XmlCommentsFilePath = files.Select(a => Path.Combine(basePath, a.FullName)).ToList();
foreach (var item in XmlCommentsFilePath)
{
options.IncludeXmlComments(item, true);
}
#endregion
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
还有其它相关swagger 可以去官方文档了解 Get started with Swashbuckle and ASP.NET Core | Microsoft Docshttps://aka.ms/aspnetcore/swashbuckle
到此运行项目就得到想要的结果了
也支持多版本文档
新建版本枚举,并修改对应的Program代码
//版本枚举
public enum ApiVersion
{
v1, v2, v3, v4, v5, v6, v7, v8, v9, v10
}
#region 设置API文档信息
typeof(ApiVersion).GetEnumNames().ToList().ForEach(n =>
{
options.SwaggerDoc(n.ToString(), new OpenApiInfo
{
Version = n.ToString(),
Title = @$"{ApiName} 接口文档",
Description = @$"{ApiName} HTTP API {n}"
});
});
options.OrderActionsBy(o => o.RelativePath);
#endregion
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
typeof(ApiVersion).GetEnumNames().ToList().ForEach(n =>
{
c.SwaggerEndpoint($"/swagger/{n}/swagger.json", $"{ApiName}({n})");
});
});
}
然后为你的接口添加
[ApiExplorerSettings(GroupName = "v1")]
进行分组
运行效果如下