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"); }); }
