using Easy.Blog.Configurations;using Easy.Blog.Web.SwaggerFilter;using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;using Microsoft.OpenApi.Models;using Swashbuckle.AspNetCore.Filters;using System;using System.Collections.Generic;using System.IO;using static Easy.Blog.BlogConsts;namespace Easy.Blog.Swagger{public static class BlogSwaggerExtensions{/// <summary>/// 当前API版本,从appsettings.json获取/// </summary>private static readonly string version = $"v{AppSettings.ApiVersion}";/// <summary>/// Swagger描述信息/// </summary>private static readonly string description = @"<b>Blog</b>:<a target=""_blank"" href=""https://meowv.com"">https://meowv.com</a> <b>GitHub</b>:<a target=""_blank"" href=""https://github.com/Meowv/Blog"">https://github.com/Meowv/Blog</a> <b>Hangfire</b>:<a target=""_blank"" href=""/hangfire"">任务调度中心</a> <code>Powered by .NET Core 3.1 on Linux</code>";public static IServiceCollection AddSwagger(this IServiceCollection services){return services.AddSwaggerGen(options =>{ApiInfos.ForEach(x =>{options.SwaggerDoc(x.UrlPrefix, x.OpenApiInfo);});options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Easy.Blog.HttpApi.xml"));options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Easy.Blog.Domain.xml"));options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Easy.Blog.Application.Contracts.xml"));// jwtvar security = new OpenApiSecurityScheme{Description = "JWT模式授权,请输入 Bearer {Token} 进行身份验证",Name = "Authorization",In = ParameterLocation.Header,Type = SecuritySchemeType.ApiKey};options.AddSecurityDefinition("oauth2", security);options.AddSecurityRequirement(new OpenApiSecurityRequirement { { security, new List<string>() } });options.OperationFilter<AddResponseHeadersFilter>();options.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();options.OperationFilter<SecurityRequirementsOperationFilter>();// 应用Controller的API文档描述信息options.DocumentFilter<SwaggerDocumentFilter>();});}public static void UseSwaggerUI(this IApplicationBuilder app){app.UseSwaggerUI(options =>{// 遍历分组信息,生成JsonApiInfos.ForEach(x =>{options.SwaggerEndpoint($"/swagger/{x.UrlPrefix}/swagger.json", x.Name);});});}/// <summary>/// Swagger分组信息,将进行遍历使用/// </summary>private static readonly List<SwaggerApiInfo> ApiInfos = new List<SwaggerApiInfo>(){new SwaggerApiInfo{UrlPrefix = Grouping.GroupName_v1,Name = "博客前台接口",OpenApiInfo = new OpenApiInfo{Version = version,Title = "阿星Plus - 博客前台接口",Description = description}},new SwaggerApiInfo{UrlPrefix = Grouping.GroupName_v2,Name = "博客后台接口",OpenApiInfo = new OpenApiInfo{Version = version,Title = "阿星Plus - 博客后台接口",Description = description}},new SwaggerApiInfo{UrlPrefix = Grouping.GroupName_v3,Name = "通用公共接口",OpenApiInfo = new OpenApiInfo{Version = version,Title = "阿星Plus - 通用公共接口",Description = description}},new SwaggerApiInfo{UrlPrefix = Grouping.GroupName_v4,Name = "JWT授权接口",OpenApiInfo = new OpenApiInfo{Version = version,Title = "阿星Plus - JWT授权接口",Description = description}}};internal class SwaggerApiInfo{/// <summary>/// URL前缀/// </summary>public string UrlPrefix { get; set; }/// <summary>/// 名称/// </summary>public string Name { get; set; }/// <summary>/// <see cref="Microsoft.OpenApi.Models.OpenApiInfo"/>/// </summary>public OpenApiInfo OpenApiInfo { get; set; }}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。