【发布时间】:2018-01-02 16:45:15
【问题描述】:
我们有一个ProductsAPI 来浏览我们网站上可用的产品,这些产品由我们的移动应用程序(Android 和 iOS)使用。以下是基本设计:
URL: /api/products/
Response:
[
{
"id" : 123,
"name" : "abc",
"detailsUrl" : "/api/products/123"
},
{
"id" : 124,
"name" : "xyz",
"detailsUrl" : "/api/products/124"
}
]
这里,detailsUrl 包含ProductDetails 页面的 API URL。
现在,我们需要在新版本的应用程序中对ProductDetails API 的响应进行一些更改,并需要对其进行版本化。 URL 将更改为 - /api/v2/products/{id}(我们通过 URL 使用 API 版本控制)。
由于我们不希望以前版本的应用程序中出现新的响应,我们需要创建一个新版本的ProductsAPI,它也会发送新的ProductDetailsAPI url 作为响应。
API 以这种方式耦合。如果我们更改任何子 API 的版本,父 API 版本也需要更改。处理此问题的推荐方法是什么?我们是否应该改变对 API 进行版本控制的方式(使用标头或其他东西)?
【问题讨论】:
标签: rest api restful-architecture hateoas api-versioning