ASP.NET 在 Swagger UI中显示 Header

添加swagger

1)需要 先添加两个nuget组件
先添加 swashbuckle
2)添加完成后,需要修改项目属性,添加xml文档支持
在这里插入图片描述

添加完成。

接下来添加header

创建两个类,一个是过滤器,一个是swagger的过滤类

1)过滤器类:

public class WebApiAuthFilterAttribute:AuthorizeAttribute  {

    static CommonLogger log = new CommonLogger(typeof(WebApiAuthFilterAttribute)); 
    
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        CommonChecker.printPerfomance("过滤器验证开始", DateTime.Now);
        CommonChecker.CheckHeader(actionContext);//此方法为检查header中是否有参数,此处检查如果不通过,会抛出异常
        //webAPI应当有对异常的全局处理类,保证API不会返回500错误。
      
    } 
      
}

2)创建swagger过滤类

 public class GlobalHttpHeaderFilter : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        if (operation.parameters == null)
            operation.parameters = new List<Parameter>();

        var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); //判断是否添加权限过滤器
        var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter); //判断是否允许匿名方法 

        var isNeedLogin = apiDescription.ActionDescriptor.GetCustomAttributes<WebApiAuthFilterAttribute>().Any(); //此处放置刚才创建的验证类
        if (isNeedLogin)//如果有验证标记则 多输出2个文本框(swagger form提交时会将这2个值放入header里)
        {
            operation.parameters.Add(new Parameter { name = "openID", @in = "header", description = "登录成功时返回的openID", required = false, type = "string" });
            operation.parameters.Add(new Parameter { name = "telephone", @in = "header", description = "获取手机号时返回的手机号", required = false, type = "string" });
            operation.parameters.Add(new Parameter { name = "token", @in = "header", description = "获取手机号时返回的sessionID", required = false, type = "string" });
        }
    }
}
在swaggerConfig.cs中添加注册代码
GlobalConfiguration.Configuration
            .EnableSwagger(c =>
                {

                    c.OperationFilter<Filters.GlobalHttpHeaderFilter>();/*添加此行*/
                    });
在需要验证的controller前面加上过滤器标记

在这里插入图片描述
运行结果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值