Swagger配置
一、引用SwaggerNuGet包
Swashbuckle.AspNetCore
二、代码实现配置
首先生成XML文档文件,点击项目》右键属性》点击生成》输出一栏 勾选XML文档文件
注:生成的文件要设置属性始终复制,否则发布后文档可能报错;
1 /// <summary> 2 /// swagger配置项版本控制 3 /// </summary> 4 public class SwaggerVersions 5 { 6 /// <summary> 7 /// swagger版本选项 8 /// </summary> 9 public enum ApiVersions 10 { 11 v1 = 1, 12 v2 = 2, 13 v3 = 3, 14 v4 = 4, 15 v5 = 5 16 } 17 }
public void ConfigureServices(IServiceCollection services) { services.AddSwaggerGen(c => { #region 分版本的Swagger配置 //要启用swagger版本控制要在api控制器或者方法上添加特性[ApiExplorerSettings(GroupName = "v1")] v1是版本号 typeof(ApiVersions).GetEnumNames().ToList().ForEach(version => { c.SwaggerDoc(version, new OpenApiInfo() { Title = $"{version}:CoreAPIDemo", Version = version, Description = $"通用版本的CoreApi版本{version}" }); }); #endregion //添加注释 取消注释则无版本控制,需要把上面的注释 //c.SwaggerDoc("CoreAPIDemo", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "CoreAPIDemo", Version = "v1.1" }); // 获取xml文件名 var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; // 获取xml文件路径 var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); // 添加控制器层注释,true表示显示控制器注释 c.IncludeXmlComments(xmlPath); }); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseSwagger(); app.UseSwaggerUI(c => { //遍历多版本基本上先不用有需求时打开 typeof(ApiVersions).GetEnumNames().ToList().ForEach(version => { c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{version}"); }); //不分版本的Swagger //c.SwaggerEndpoint($"/swagger/CoreAPIDemo/swagger.json", "CoreAPIDemo"); }); }