/// <summary> /// 启用Swagger /// </summary> /// <param name="app"></param> /// <param name="swaggerSetting"></param> public static void UseSwaggerDocument(this IApplicationBuilder app, SwaggerSetting swaggerSetting) { app.UseSwagger(); app.UseSwaggerUI(c => { foreach (var doc in swaggerSetting.SwaggerGroups) { c.SwaggerEndpoint($"/swagger/{doc.Name}/swagger.json", doc.Description); } }); }
/// <summary> /// 添加Swagger /// </summary> /// <param name="services"></param> /// <param name="swaggerSetting"></param> public static void AddSwaggerDocument(this IServiceCollection services, SwaggerSetting swaggerSetting) { services.AddSwaggerGen(c => { foreach (var doc in swaggerSetting.SwaggerGroups) { c.SwaggerDoc(doc.Name, new OpenApiInfo() { Version = doc.Version, Title = doc.Title, Description = doc.Description, }); } c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Description = swaggerSetting.TokenDescription ?? "Authorization format : Bearer {token}", Name = swaggerSetting.TokenName ?? "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "Bearer" }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { } } }); var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location); if (!string.IsNullOrEmpty(swaggerSetting.ApiXmlName)) { var apiXmlPath = Path.Combine(basePath, swaggerSetting.ApiXmlName); c.IncludeXmlComments(apiXmlPath); } if (!string.IsNullOrEmpty(swaggerSetting.EntityXmlName)) { var entityXmlPath = Path.Combine(basePath, swaggerSetting.EntityXmlName); c.IncludeXmlComments(entityXmlPath); } }); }