API版本控制:APIM功能和.net核心API版本控制功能

时间:2019-05-17 07:55:30

标签: swagger azure-api-management azure-api-apps .net-core-2.2

我为REST Api构建了一个.net核心2.2 Api应用程序。 我使用以下nuget实现API版本控制

enter image description here

我已经实现了相同API的两个版本

[Route("api/v{version:apiVersion}/versionfinder")]
[ApiVersion("1.0")]
[ApiController]
public class VersionV1Controller : ControllerBase
{
    [HttpGet]
    [SwaggerOperation(
        Summary = "version 1 api",
        Description = "",
        OperationId = "GetVersionOne",
        Tags = new[] { "Versioning", }
    )]
    [SwaggerResponse(200, "", typeof(string))]
    [Produces("application/json")]
    public async Task<IActionResult> GetVesrion()
    {
        return Ok("version 1.0");
    }
}


[Route("api/v{version:apiVersion}/versionfinder")]
[ApiVersion("2.0")]
[ApiController]
public class VersionV2Controller : ControllerBase
{
    [HttpGet]
    [SwaggerOperation(
        Summary = "version 2 api",
        Description = "",
        OperationId = "GetVersionTwo",
        Tags = new[] { "Versioning", }
    )]
    [SwaggerResponse(200, "", typeof(string))]
    [Produces("application/json")]
    public async Task<IActionResult> GetVesrionTwo()
    {
        return Ok("version 2.0");
    }
}

下面是从startup.cs使用URL版本g

        services.AddApiVersioning(o =>
        {
            o.ReportApiVersions = true;
            o.AssumeDefaultVersionWhenUnspecified = true;
            o.DefaultApiVersion = new ApiVersion(1, 0);
        });

我为每个版本创建了两个不同的swagger文件。此API在Azure中作为API应用托管。

我正在使用Azure APIM来配置这些API。

我使用API​​M版本控制功能在azure APIM中创建了两个版本的API

enter image description here

问题陈述

  

生成的摇摇欲坠在路径中包含“版本”信息,   APIM还为其添加了另一层。

在APIM中创建的API路由也包含版本信息。我使用“ PATH”作为版本控制。

APIM路由就像 Baseuri / V1 / api / v {version} / versionfinder Baseuri / V2 / api / v {version} / versionfinder

我想使用API​​M功能进行版本控制。 我希望让干净的URL的“ Baseuri / V1 / api / versionfinder” 暴露给最终用户,而不是像“ Baseuri / V1 / api / v1 / versionfinder”这样的路由

您对此的意见将有所帮助。

谢谢, 森希尔

0 个答案:

没有答案