如何将头参数添加到API.NET Web API的特定控制器/方法

时间:2017-06-05 09:57:39

标签: swagger swagger-ui

我知道我可以按照Web Api How to add a Header parameter for all API in Swagger

中的描述为swagger中的所有API添加标头参数

使用这种方法,header参数将显示在所有API的swagger UI中。

但并非我的所有API /控制器都需要header参数,是否有办法仅为特定控制器甚至特定API添加标头?

1 个答案:

答案 0 :(得分:2)

虽然这篇文章很老,但我认为如果他们遇到困难会对新来者有所帮助 在相同的情况下。

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

       /*System.Diagnostics.Trace.WriteLine(apiDescription.RelativePath +
          "=paath");*/
        if (apiDescription.RelativePath.Contains(***{url***}))
        {
            operation.parameters.Add(new Parameter
            {
                name = "X-User-Token",
                @in = "header",
                type = "string",
                required = false,
                description=""
            });
            operation.parameters.Add(new Parameter
            {
                name = "authorization",
                @in = "header",
                description = "Token",
                type = "string",
                required = true
            });
        }
        else
        {
            operation.parameters.Add(new Parameter
            {
                name = "X-User-Token",
                @in = "header",
                type = "string",
                required = false,
                description="description"
            });
        }
    }
}