Управление версиями API: возможности APIM и возможности управления версиями API ядра .net - PullRequest
0 голосов
/ 17 мая 2019

Я создал приложение .net core 2.2 Api для REST Api. Я использовал приведенные ниже нюгеты для достижения версий 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-адрес versiong

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

Я создал два разных файла swagger для каждой версии. Этот API-интерфейс размещается как приложение API в Azure.

Я использую APIM Azure для настройки этих API.

Я создал две версии API в Azure APIM, как показано ниже, используя возможности управления версиями APIM

enter image description here

Постановка задачи

Сгенерированные чванства содержат информацию о "версии" в пути, APIM также добавляет еще один слой.

Маршруты API, созданные в APIM, также содержат информацию о версии. Я использовал "ПУТЬ" в качестве версии.

APIM маршруты похожи BaseUri / * +1035 * V1 / API / * * v одна тысяча тридцать семь {версия} / versionfinder BaseUri / * * V2 1 039 / API / * * v одна тысяча сорок-одна {версия} / versionfinder

Я бы хотел использовать возможности APIM для управления версиями. Я хочу, чтобы чистые URL-адреса "Baseuri / V1 / api / versionfinder" были доступны для конечных пользователей, а не маршруты типа "Baseuri / V1 / api / v1 / versionfinder"

Ваш вклад будет полезен.

Спасибо, Sendhil

...