Я создал приложение .net core 2.2 Api для REST Api.
Я использовал приведенные ниже нюгеты для достижения версий API
![enter image description here](https://i.stack.imgur.com/MgOcZ.png)
У меня реализованы две версии одного и того же 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](https://i.stack.imgur.com/LUmql.png)
Постановка задачи
Сгенерированные чванства содержат информацию о "версии" в пути,
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