zoukankan      html  css  js  c++  java
  • Core3.0 升级swagger 配置区别

    Nuget 安装包区别

    Core2.2

     Core3.0

     

    IDocumentFilter区别

    Core2.2

     

    Core3.0

    Core 2.2

    app.UseSwagger(c =>
    {
      c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.Host = httpReq.Host.Value);
    });
    

      

    Core 3.0

    app.UseSwagger(c =>
    {
      c.PreSerializeFilters.Add((swagger, httpReq) =>
      {
        swagger.Servers = new List<OpenApiServer> { new OpenApiServer { Url = $"{httpReq.Scheme}://{httpReq.Host.Value}" } };
      });
    });
    

    原使用到的info改变为OpenApiInfo

    Microsoft.OpenApi 代替 Swashbuckle.AspNetCore.Swagger

    Core 2.2

    Core 3.0

    Swagger 添加 token Header区别

    Core 2.2

    public class AddAuthTokenHeaderParameter : IOperationFilter
        {
            public void Apply(Operation operation, OperationFilterContext context)
            {
                if (operation.Parameters == null)
                    operation.Parameters = new List<IParameter>();
    
                var attrs = context.ApiDescription.ActionDescriptor.AttributeRouteInfo;
    
                //先判断是否是匿名访问,
                var descriptor = context.ApiDescription.ActionDescriptor as ControllerActionDescriptor;
                if (descriptor != null)
                {
                    //var isAuthorized = descriptor..Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
    
                    var actionAttributes = descriptor.MethodInfo.GetCustomAttributes(inherit: true);
    
                    bool isAnonymous = actionAttributes.Any(a => a is AllowAnonymousAttribute);
                    bool isAuthorized = actionAttributes.Any(a => a is AuthorizeAttribute);
                    //非匿名的方法,链接中添加accesstoken值
                    if (!isAnonymous && isAuthorized)
                    {
                        operation.Parameters.Add(new NonBodyParameter()
                        {
                            Name = "Authorization",
                            In = "header",//query header body path formData
                            Type = "string",
                            Default = "",
                            Required = true //是否必选
                        });
                    }
    
                }
            }
        }
    

      Core 3.0

    public class AddAuthTokenHeaderParameter : IOperationFilter
        {
            public void Apply(OpenApiOperation operation, OperationFilterContext context)
            {
                if (operation.Parameters == null)
                {
                    operation.Parameters = new List<OpenApiParameter>();
                }
    
                var attrs = context.ApiDescription.ActionDescriptor.AttributeRouteInfo;
    
                //先判断是否是匿名访问,
                var descriptor = context.ApiDescription.ActionDescriptor as ControllerActionDescriptor;
                if (descriptor != null)
                {
                    //var isAuthorized = descriptor..Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
    
                    var actionAttributes = descriptor.MethodInfo.GetCustomAttributes(inherit: true);
    
                    bool isAnonymous = actionAttributes.Any(a => a is AllowAnonymousAttribute);
                    bool isAuthorized = actionAttributes.Any(a => a is AuthorizeAttribute);
                    //非匿名的方法,链接中添加accesstoken值
                    if (!isAnonymous && isAuthorized)
                    {
                        operation.Parameters.Add(new OpenApiParameter()
                        {
                            Name = "Authorization",
                            In= ParameterLocation.Header,//query header body path formData
                            Description="Token验证",
                             Schema = new OpenApiSchema() { 
                                Type="string",
                             },
                            //In = "header",//query header body path formData
                            //Type = "string",
                            //Default = "",
                            Required = true //是否必选
                        });
                    }
    
                }
            }
        }
    

      

  • 相关阅读:
    angularjs 学习教程
    Mac下的开发工具
    国双前端笔试题-2016年07月08日
    css3 box-sizing属性
    .NET中制做对象的副本(一)
    Nginx限制IP访问及获取客户端realip实战
    Saltstack实战之无master和多master
    Saltstack之job管理和runner
    Python之异常处理
    Python内置函数之isinstance,issubclass
  • 原文地址:https://www.cnblogs.com/zxcnn/p/11654261.html
Copyright © 2011-2022 走看看