我为REST Api构建了一个.net核心2.2 Api应用程序。 我使用以下nuget实现API版本控制
我已经实现了相同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。
我使用APIM版本控制功能在azure APIM中创建了两个版本的API
问题陈述
生成的摇摇欲坠在路径中包含“版本”信息, APIM还为其添加了另一层。
在APIM中创建的API路由也包含版本信息。我使用“ PATH”作为版本控制。
APIM路由就像 Baseuri / V1 / api / v {version} / versionfinder Baseuri / V2 / api / v {version} / versionfinder
我想使用APIM功能进行版本控制。 我希望让干净的URL的“ Baseuri / V1 / api / versionfinder” 暴露给最终用户,而不是像“ Baseuri / V1 / api / v1 / versionfinder”这样的路由
您对此的意见将有所帮助。
谢谢, 森希尔