asp.net core webapi 完整Swagger配置
在当前项目下新建Utility文件夹,Utility文件夹下面在创建SwaggerExt文件夹,文档结果如下
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中使用