所以我想说我有两个端点:
现在我必须在 / send 中更改某些内容而不会失去向后兼容性。所以我正在创造:
但那我该怎么办?我是否需要创建与 v1 相同的 example.com/ v2 / read ?让我们想象一下,有很多控制器有数百个端点。我是否会通过更改每个小端点来创建这样的新版本?或者我的前端应该使用这样的API吗?
最佳做法是什么?
答案 0 :(得分:1)
在可能包含新端点的过程中,可能会删除某些端点,模型可能会更改等等。版本控制适用于:跟踪更改。
您可能会在一段时间内同时支持版本1和版本2,但您很难永远支持这两个版本。在某些时候,您可能会删除版本1,并希望仅保持版本2完全启动并运行。
因此,请将API的新版本视为可以独立于先前版本使用的API。换句话说,特定客户端应该针对API的一个版本而不是多个版本。当然,如果可能的话,最好具有向后兼容性。
及时:您是否考虑过处理版本控制的媒体类型而不是在网址中添加版本?
例如,看看GitHub API。所有请求都由API的默认版本处理,但可以使用媒体类型在$request->get()
标头中定义目标版本(并鼓励客户端定义目标版本):
Accept