根据REST规范,建议不要在URL中包含版本信息,因为REST URI应该引用唯一资源。但是,几乎所有最流行的基于REST的API都不遵循此建议。
要使事情变得容易,请在v2中部署resource1(如果没有可用的新版本)。
如果有可用的新版本,请在v2中部署该版本。
让两个版本都运行,并留出一段时间让客户端升级并在一段时间后删除较旧的版本。
,
IMO API版本控制应该在API级别(请注意:“ API”是指一组资源/路由及其操作)。即使您只需要更改单个路由的单个特定操作的版本,也可以;所有现有的API操作也应使用新版本进行访问,例如您不应具有在/api/v2/template/thing
可以访问一个操作的情况,但是在同一API中的第二个操作只能在/api/v1/template/item
而不是/api/v2/template/item
进行访问。这会给API使用者增加很多困惑。
我们在我目前的公司中使用.NET Core。为了实现上述目的,API控制器类的所有已知版本都带有ApiVersion
属性标记。不是最新版本的特定操作会用MapToApiVersion
属性标记-最新操作版本不会用特定的MapToApiVersion
标记,例如
[ApiVersion("1.0")]
[ApiVersion("2.0")]
[ApiController]
[Route("api/v{version:apiVersion}/template/test")]
public class TestController : ControllerBase
{
[HttpGet]
[MapToApiVersion("1.0")]
public IActionResult Get()
{
return Ok(nameof(Get));
}
[HttpGet]
public IActionResult GetV2()
{
return Ok(nameof(GetV2));
}
在上面的示例中;对于没有明确处理的任何版本,GetV2
操作基本上是默认路由。通过HTTP GET到/api/v2/template/test
。
这种方法为您带来好处; a)客户端不必担心版本控制的详细程度,b)仍然可以对端点进行增量重构,而不会破坏向后兼容性。
本文链接:https://www.f2er.com/3140624.html