我知道我可以按照Web Api How to add a Header parameter for all API in Swagger
中的描述为swagger中的所有API添加标头参数使用这种方法,header参数将显示在所有API的swagger UI中。
但并非我的所有API /控制器都需要header参数,是否有办法仅为特定控制器甚至特定API添加标头?
答案 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"
});
}
}
}