CustomSwaggerExt.cs文件如下
using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models;namespace xxxxxxxxxx {/// <summary>/// 扩展Swagger/// </summary>public static class CustomSwaggerExt{/// <summary>/// 配置Swagger/// </summary>/// <param name="builder"></param>public static void AddSwaggerExt(this WebApplicationBuilder builder){builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen(option =>{typeof(ApiVersion).GetEnumNames().ToList().ForEach(version =>{option.SwaggerDoc(version, new OpenApiInfo(){Title = "xxxxxxxx-Api服务",Version = version,Description = $"通过版本的coreApi版本{version}"});});//读取根据api生成的控制器xml文件var file = Path.Combine(AppContext.BaseDirectory, "你的webapi解决方案名.xml");//显示控制器层注释option.IncludeXmlComments(file, true);//对action进行排序option.OrderActionsBy(r => r.RelativePath);option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme{Description = "请输入token,格式为 【Bearer JWT字符串】(注意中间必须有空格)",Name = "Authorization",In = ParameterLocation.Header,Type = SecuritySchemeType.ApiKey,BearerFormat = "JWT",Scheme = "Bearer"});//添加安全要求option.AddSecurityRequirement(new OpenApiSecurityRequirement(){{new OpenApiSecurityScheme{Reference =new OpenApiReference{Type = ReferenceType.SecurityScheme,Id ="Bearer"}},new string[]{ }}});});}/// <summary>/// 中间件生效/// </summary>public static void UseSwaggerExt(this WebApplication app){app.UseSwagger();app.UseSwaggerUI(option =>{foreach (string version in typeof(ApiVersion).GetEnumNames().ToList()){option.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"xxxx实战api第【{version}】版本");}});}} }
ApiVersion.cs文件内容
namespace xxxxxxx {public enum ApiVersion{V1,V2} }
起启动文件Program.cs中使用