- 我在 Web API MVC5 中配置了 Swagger UI。对于测试 API,在我添加一些 header 参数之前,swagger 工作正常。
- API 的创建方式是用户名和密码字段位于 header 中,所有其他数据均位于正文中。
- 标题由
IOperationFilter
添加正如 Web Api How to add a Header parameter for all API in Swagger 中所建议的那样 和OperationFilter
添加到SwaggerConfig.cs
如:c.OperationFilter<AddHeaderParameters>();
public class AddHeaderParameters : 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 = "Account Username", @in = "header", type = "string", required = true, }); operation.parameters.Add(new Parameter { name = "Account Password", @in = "header", type = "string", required = true, }); } }
需要帮助我错过了什么或做错了什么。
最佳答案
我在问题中得到了上面提到的问题的解决方案。在这里分享可能对其他人有帮助。
当我创建用于在 swagger UI 中获取 header 的类 AddHeaderParameters
时,我给了 header 名称自定义(这是问题的实际原因)。 header 名称应该与实际 header 名称匹配。
就我而言,例如 header 名称是 AccountUserName
,我在 swagger header 中使用了它,并将空格作为 Account Username
。
正确的方法
operation.parameters.Add(new Parameter
{
name = "AccountUserName",
@in = "header",
type = "string",
required = true,
});
关于c# - 使用 Swagger 的 Web API MVC5 不会使用带有 header 的 "Try it out!"调用 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63249711/