- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在不同的 Controller 上添加单独的 header 。例如:
Controller 名称:Controller1,自定义 header :Header1
Controller 名称:Controller2,自定义 header :Header2
应该为特定 Controller 下的所有 api 显示 header
最佳答案
这可以通过在您的 swagger 配置中添加一个 OperationFilter 来解决。首先,您必须提供一个实现 IOperationFilter
的类。 Apply
方法接收一个 Operation
参数,该参数在 tag
字段中包含 Controller 名称。呈现 Swagger UI 时,将为 API 中的每个方法调用 Apply
方法。您甚至可以为每个 API 方法提供单独的参数,因为 Operation
还包含 operationId。
public class AddRequiredHeaderParameter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
operation.parameters = new List<Parameter>();
if (operation.tags[0]?.CompareTo("Example") == 0)
{
operation.parameters.Add(new Parameter
{
name = "X-ExampleParam",
@in = "header",
@default = "42", // optional default value, can be omitted
type = "string",
description = "My special parameter for the example API",
required = true
});
}
else if (operation.tags[0]?.CompareTo("Whatever") == 0)
{
// add other header parameters here
}
}
}
在调试器中,有一个名为 ExampleController
的 Controller ,它看起来像这样:
Swagger UI 中的结果是一个特殊参数,它仅应用于我的示例 Controller 的 API:
通过在 SwaggerConfig
类的 Register
方法中添加一行,告诉 Swagger 使用您的 OperationFilter:
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
//GlobalConfiguration.Configuration
config
.EnableSwagger(c =>
{
... // omitted some lines here
c.OperationFilter<AddRequiredHeaderParameter>(); // Add this line
... // omitted some lines here
})
}
这个解决方案的想法是基于沙田的回答:How to send custom headers with requests in Swagger UI?
关于asp.net-web-api - 使用 Swasbuckle 在 web api 的不同 Controller 中添加单独的自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492912/
我已将我的 Swashbuckle 升级到版本 5,一切都好多了。 现在我遇到一个问题,我的消费者需要 Swagger Json 格式作为 Swagger 2.0,而不是 Swashbuckle 5
如何在不同的 Controller 上添加单独的 header 。例如: Controller 名称:Controller1,自定义 header :Header1 Controller 名称:Con
我是一名优秀的程序员,十分优秀!