using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace UIStandardWebApi.WebCore.SwaggerExtend { public static class SwaggerExtensions { /// /// 配置Swagger的配置 /// /// /// /// public static void AddSwaggerExt(this IServiceCollection service, string docName, string docDescription) { service.AddEndpointsApiExplorer(); service.AddSwaggerGen(option => { foreach (var version in typeof(ApiVersions).GetEnumNames()) { option.SwaggerDoc(version, new OpenApiInfo() { Title = !string.IsNullOrWhiteSpace(docName) ? docName : $"Api文档", Version = version, Description = !string.IsNullOrWhiteSpace(docDescription) ? docDescription : $"Api版本v1" }); } //option.OperationFilter(); // xml文档绝对路径 var file = Path.Combine(AppContext.BaseDirectory, $"{AppDomain.CurrentDomain.FriendlyName}.xml"); // true : 显示控制器层注释 option.IncludeXmlComments(file, true); // 对action的名称进行排序,如果有多个,就可以看见效果了。 option.OrderActionsBy(o => o.RelativePath); //#region 支持jwt token授权 //{ // //添加安全定义--配置支持token授权机制 // option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme // { // Description = "请输入token,格式为 Bearer xxxxxxxx(注意中间必须有空格)", // 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[]{ } // } // }); //} //#endregion }); } /// /// 使用Swagger中间件 /// /// public static void UseSwaggerExt(this WebApplication app, string docName) { app.UseSwagger(); app.UseSwaggerUI(option => { foreach (string version in typeof(ApiVersions).GetEnumNames()) { option.SwaggerEndpoint($"/swagger/{version}/swagger.json", string.IsNullOrWhiteSpace(docName) ? docName : $"软件标准化Api文档【{version}】版本"); } }); } } }