使用 Swagger 的 Web API MVC5 不会通过“试试看!”调用 API带标题
Posted
技术标签:
【中文标题】使用 Swagger 的 Web API MVC5 不会通过“试试看!”调用 API带标题【英文标题】:Web API MVC5 using Swagger not going to call API with "Try it out!" with Headers 【发布时间】:2020-08-04 15:04:39 【问题描述】: 我在我的 Web API MVC5 中配置了 Swagger UI。对于测试 API,在我添加一些标头参数之前,swagger 可以正常工作。 API 的创建方式是,用户名和密码字段位于标头中,所有其他数据位于正文中。 标题由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
需要帮助我遗漏了什么或不正确的事情。
【问题讨论】:
【参考方案1】:我得到了问题中上述问题的解决方案。在这里分享可能对其他人有帮助。
当我创建类 AddHeaderParameters
以在 swagger UI 中获取标题时,我已经自定义了标题名称(这是问题的实际原因)。标题名称应该与实际标题名称匹配。
就我而言,例如标题名称是AccountUserName
,我在大摇大摆的标题中使用它,并给出空间为Account Username
。
正确的方法
operation.parameters.Add(new Parameter
name = "AccountUserName",
@in = "header",
type = "string",
required = true,
);
【讨论】:
是的,我使用了 swagger,但没有返回包含多个字母的标题,因此它信息丰富且有益。以上是关于使用 Swagger 的 Web API MVC5 不会通过“试试看!”调用 API带标题的主要内容,如果未能解决你的问题,请参考以下文章
Web Api 2.0中使用Swagger生成Api文档的2个小Tips
基于.net EF6 MVC5+WEB Api 的Web系统框架总结-Excel文件读写操作
ASP.NET Core Web API中使用Swagger
Swagger UI教程 API 文档神器 搭配Node使用 web api 接口文档 mvc接口文档