我正在观看一个.Net 5.0教程,其中讲师定义了两个没有[HttpGet]属性的端点(在他的视频中可以使用):
我有一个.Net 7.0项目。我收到以下两个端点的消息:“操作需要Swagger/OpenAPI 3.0的显式HttpMethod绑定”
[Route("{id:int}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public ActionResult<Dto> DoSomething
[Route("{name}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public ActionResult<DTO> DoSomething2
如果我添加[HttpGet]就可以了。所以这是Swagger3.0的必需属性吗?
编辑:我刚刚在浏览器中执行了普通的REST调用。它们工作了。但是Swagger UI抛出了上面提到的错误。所以这似乎是一个Swagger问题。
1条答案
按热度按时间hmmo2u0o1#
这不是Swagger问题,而是Swashbuckle问题,它实现了.NET控制器的扫描代码。这并不是一个问题,因为这只是SwaggerUI的设计方式,我相信最初的原因是使用
[HttpGet]
查找方法比查找传统的命名方法容易得多(例如以Get
开始的方法)或其它潜在的易于出错的扫描方式。因此,从这个意义上说,* 是的 * 您必须将您的控制器归因于
[HttpGet]
。