NetCore Swagger
//配置swagger
services.AddSwaggerGen(m =>
{
//生成單個版本
m.SwaggerDoc("SWG1", new OpenApiInfo { Title = "swaggerTest", Version = "SWG1" });
//生成多個版本控制接口
//要啟用swagger版本控制要在api控制器或者方法上添加特性[ApiExplorerSettings(GroupName = "v1")] v1是版本號 ApiVersions為版本的枚舉
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
m.SwaggerDoc(version, new OpenApiInfo()
{
Title = $"{version}:接口API",
Version = version,
Description = $"通用版本的CoreApi版本{version}"
});
});
//添加讀取注釋服務
var basePath = Path.GetDirectoryName(typeof(BaseController).Assembly.Location);
if (string.IsNullOrEmpty(basePath))
{
basePath = PlatformServices.Default.Application.ApplicationBasePath;
}
var xmlPath = Path.Combine(basePath, "XX.API.xml");
m.IncludeXmlComments(xmlPath, true);//添加控制器層注釋(true表示顯示控制器注釋)
var xmlModelPath = Path.Combine(basePath, "XX.Model.xml");//這個就是Model層的xml文件名
//注意,如果你的Model與API不在一個類庫,需要將你涉及到的實體庫都開啟生成xml文檔
m.IncludeXmlComments(xmlModelPath, true);

//m.OrderActionsBy(o => o.RelativePath); // 對action的名稱進行排序
m.EnableAnnotations();
//添加身份認證
m.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "Please enter into field the word 'Bearer' followed by a space and the JWT value",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
BearerFormat = "JWT",
Scheme = "Bearer"
});
m.AddSecurityRequirement(new OpenApiSecurityRequirement{
{ new OpenApiSecurityScheme{
Reference=new OpenApiReference{ Type=ReferenceType.SecurityScheme,Id="Bearer"}
} ,Array.Empty<string>() }
});
})
//啟用swagger
app.UseSwagger();
//生成單個版本
app.UseSwaggerUI(m =>
{
m.SwaggerEndpoint("/Swagger/SWG1/swagger.json", "swaggerTest");
//m.DocExpansion(DocExpansion.None);//折疊swagger中的所有方法
});
//生成多個版本控制接口
app.UseSwaggerUI(c =>
{
//遍歷多版本基本上先不用有需求時打開
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{version}");
});
});
按模塊分組參考地址: http://www.rzrgm.cn/caijt/p/10739841.html

浙公網安備 33010602011771號