如何配置Swagger?-创新互联

Swagger 注册:

成都创新互联自2013年创立以来,先为成都等服务建站,成都等地企业,进行企业商务咨询服务。为成都企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
     services.AddSwaggerGen(c =>
     {
       c.OperationFilter();
       var security = new Dictionary> { { "Bearer", new string[] { } }, };
       c.AddSecurityRequirement(security);
       //添加一个必须的全局安全信息
       //,和AddSecurityDefinition方法指定的方案名称要一致,
       //这里是Bearer。
       c.DescribeStringEnumsInCamelCase();
       c.DescribeAllParametersInCamelCase();
       c.DescribeAllEnumsAsStrings();
       c.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info
       {
         Title = "接口文档",
         Version = "v1",
         Description = "YiSpace  LazyCoder is Make",
       });

       string[] files = Directory.GetFiles(AppContext.BaseDirectory, "*.xml");
       //  var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
       //  var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
       foreach (var item in files)
       {
         c.IncludeXmlComments(item, true);
       }
       //var xmlPath = Path.Combine(AppContext.BaseDirectory, "");
       //c.IncludeXmlComments(xmlPath);
       //var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
       //c.IncludeXmlComments(xmlPath);
       // c.IgnoreObsoleteActions();
       c.AddSecurityDefinition("Bearer", new ApiKeyScheme
       {
         Description = "权限认证(数据将在请求头中进行传输) 参数结构: \"Authorization: Bearer {token}\"",
         Name = "Authorization",//jwt默认的参数名称
         In = "header",//jwt默认存放Authorization信息的位置(请求头中)
         Type = "apiKey"
       });//Authorization的设置

     });

•  c.OperationFilter(); 这只是一个自定义个 Paramater 的过滤器.用户为哦通用添加 信息,为特定Filter 添加信息用

• var security = new Dictionary> { { "Bearer", new string[] { } }, };
         c.AddSecurityRequirement(security);
         //,和AddSecurityDefinition方法指定的方案名称要一致,
         //这里是Bearer。这也是我们之后看见的, Authore.Lock 的原因.因为
我们是开发的API 有些必须要有 认证所以我就添加了全局的注册.
• 一下这些 就是类型转化的配置 
c.DescribeStringEnumsInCamelCase();
     c.DescribeAllParametersInCamelCase();
     c.DescribeAllEnumsAsStrings();
•  中间的就不用说了Asp.net Core 官网上都有
•  
 c.AddSecurityDefinition("Bearer", new ApiKeyScheme
         {
           Description = "权限认证(数据将在请求头中进行传输) 参数结构: \"Authorization: Bearer {token}\"",
           Name = "Authorization",//jwt默认的参数名称
           In = "header",//jwt默认存放Authorization信息的位置(请求头中)
           Type = "apiKey"
         });//Authorization的设置
这是核心的因为有了他才会有可定制的 UI 否者不会有我们先看到.
• 同时我个人还没有就为单个api 添加 Token 开关. 也不不知如何添加 

这样我们的东西可以用了但是要注意 这里用是 jwt  Bearer 他提交时是没有给你添加Bearer 所以在使用时 Authorization: Bearer {token} 需要自己加上 Bearer

 延续
看了一下代码,突来了点灵感 实现了一下单个Action 的 token 认证 这个我们需要用到. IOperationFilter

/// 
/// swagger 增加 AUTH 选项
/// 
public class HttpAuthHeaderFilter : IOperationFilter
{     public void Apply(Operation operation, OperationFilterContext context)
   {       var HasAuth = context.ApiDescription.ActionDescriptor.FilterDescriptors.Any(t => t.Filter is Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter);
     if (HasAuth)
     {
       //operation.Security =new  
       var security = new Dictionary> { { "Bearer", new string[] { } }, };
       var ls = new List>>();
       ls.Add(security);
       operation.Security = ls;        
     }
    }
}
  operation.Security = ls;      就是安全认证的信息 配置,我没找到 api doc ,

有了他
我们还要把 :
c.AddSecurityRequirement(security);
注释了,因为他时注册全局的 身份认账.
其他的就不用做修改了, 这里我比较懒  和和代码的容易理解 没有 把配置信息 list 防止到全局,但也没有大问题,毕竟用一次

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:如何配置Swagger?-创新互联
浏览路径:http://hbruida.cn/article/cdjgso.html