c# 调试模式下Swaggerf附加接口参数

本文介绍如何在C# Web API项目中使用Swagger,并在调试模式下为所有API接口自动添加全局Header参数。通过定义一个自定义的过滤器类`GlobalHttpHeaderFilter`实现参数的自动添加,并在`WebAPIConfig`中进行配置启用。
c# 调试模式下Swaggerf附加接口参数,如:每个接口Header中附加参数appId

 

1、新增过滤器:

 

public class GlobalHttpHeaderFilter : IOperationFilter
    {        
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            if (operation.parameters == null)
                operation.parameters = new List<Parameter>();            
            operation.parameters.Add(new Parameter { name = "appId", @in = "header", description = "应用ID", required = true, type = "string" });
        }
    }

2、WebAPIConfig 配置Swagger过滤器:

            if ( System.Diagnostics.Debugger.IsAttached) //调试模式
            {
                _config.EnableSwagger(c =>
                {
                    c.SingleApiVersion("v1", $"{name}的API文档");
                    c.IncludeXmlComments($@"{AppDomain.CurrentDomain.BaseDirectory}\{name}.XML");
                    c.OperationFilter< GlobalHttpHeaderFilter>();
                }).EnableSwaggerUi();
            }

 3、控制器:

public class DemoAPIController : ApiController
{
        Logger log;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="log"></param>
        public DemoAPIController(Logger log)
        {
            this.log = log;
        }
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns>数据</returns>
        public string Get()
        {
    IEnumerable<string> values = null;

 

            if (controller.Request.Headers != null && controller.Request.Headers.TryGetValues(name, out values) && values != null && values.Count() > 0)
            {
                var appId =  values.FirstOrDefault();
            }
            return "demo";
        }

 

4、Swagger:

 

转载于:https://www.cnblogs.com/94cool/p/9238610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值