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 //是否必选
                        });
                    }
    
                }
            }
        }
    

      

  • 相关阅读:
    POJ2686 Traveling by Stagecoach(状压DP+SPFA)
    POJ3250 Bad Hair Day(单调栈)
    POJ3493 Largest Submatrix of All 1’s(单调栈)
    UVA 10160 Servicing Stations(状态压缩+迭代加深)
    POJ 2187 Beauty Contest
    HDU 6017 Girls Love 233(多态继承DP)
    POJ 2932 Coneology(扫描线)
    POJ 1127 Jack Straws (计算几何)
    挑战程序设计竞赛 3.5 借助水流解决问题的网络流
    AOJ 2230 How to Create a Good Game(费用流)
  • 原文地址:https://www.cnblogs.com/zxcnn/p/11654261.html
Copyright © 2011-2022 走看看