首页 > 解决方案 > Swagger 具有相同名称的不同 API 版本,相同的路由不起作用

问题描述

我们有两个名称相同但 API 版本不同的 REST API。两个 API 有相同的路由。此外,这两个 API 在路由中都没有 API 版本。

API #1

[ApiVersion("V1")]
[Produces("application/json")]
[Route("application/{applicationName}")]
public class Controller : BaseClass
{
    .
    .
    .
    [HttpPost("connections/generateUri", Name = "GenerateConnectionUri")]
    [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ConnectionUriResponse))]
    public async Task<IActionResult> GenerateConnectionUriAsync()
    {
    }
}


API #2

[ApiVersion("V2")]
[Produces("application/json")]
[Route("application/{applicationName}")]
public class ControllerV2 : BaseClass
{
    .
    .
    .
    [HttpPost("connections/generateUri", Name = "GenerateConnectionUriV2")]
    [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ConnectionUriResponseV2))]
    public async Task<IActionResult> GenerateConnectionUriAsync()
    {
    }
}

在生成 swagger.json 时,我们遇到了上述两个 API 的冲突。似乎 swagger 的生成依赖于路由,如果我们更改第二个 API 的路由,事情就会正常工作。

我们如何解决这个问题以在 swagger.json 中获取以上两个具有不同 API 版本的同名 API?TIA。

标签: .netasp.net-coreasp.net-web-apiswagger

解决方案


推荐阅读