REST API版本控制。在新版本中包含哪些内容?

时间:2017-04-20 10:29:09

标签: rest api versioning endpoint

所以我想说我有两个端点:

  • example.com/v1/send
  • example.com/v1/read

现在我必须在 / send 中更改某些内容而不会失去向后兼容性。所以我正在创造:

  • example.com/ v2 / send

但那我该怎么办?我是否需要创建与 v1 相同的 example.com/ v2 / read ?让我们想象一下,有很多控制器有数百个端点。我是否会通过更改每个小端点来创建这样的新版本?或者我的前端应该使用这样的API吗?

  • example.com/ v1 / send
  • example.com/的 V2 /读

最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

在可能包含新端点的过程中,可能会删除某些端点,模型可能会更改等等。版本控制适用于:跟踪更改

您可能会在一段时间内同时支持版本1和版本2,但您很难永远支持这两个版本。在某些时候,您可能会删除版本1,并希望仅保持版本2完全启动并运行。

因此,请将API的新版本视为可以独立于先前版本使用的API。换句话说,特定客户端应该针对API的一个版本而不是多个版本。当然,如果可能的话,最好具有向后兼容性。

及时:您是否考虑过处理版本控制的媒体类型而不是在网址中添加版本?

例如,看看GitHub API。所有请求都由API的默认版本处理,但可以使用媒体类型在$request->get()标头中定义目标版本(并鼓励客户端定义目标版本):

Accept