“对于Swagger/OpenAPI 3.0,操作需要一个显式的HttpMethod绑定”-[HttpGet]是Swagger 3.0中的一个必需属性吗?

hmtdttj4  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(345)

我正在观看一个.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问题。

hmmo2u0o

hmmo2u0o1#

这不是Swagger问题,而是Swashbuckle问题,它实现了.NET控制器的扫描代码。这并不是一个问题,因为这只是SwaggerUI的设计方式,我相信最初的原因是使用[HttpGet]查找方法比查找传统的命名方法容易得多(例如以Get开始的方法)或其它潜在的易于出错的扫描方式。
因此,从这个意义上说,* 是的 * 您必须将您的控制器归因于[HttpGet]

相关问题