cto*_*tor 2 api rest hateoas restful-architecture api-versioning
我们可以ProductsAPI浏览我们网站上可用的产品,这些产品由我们的移动应用程序(Android 和 iOS)使用。以下是基本设计:
URL: /api/products/
Response:
[
{
"id" : 123,
"name" : "abc",
"detailsUrl" : "/api/products/123"
},
{
"id" : 124,
"name" : "xyz",
"detailsUrl" : "/api/products/124"
}
]
Run Code Online (Sandbox Code Playgroud)
此处detailsUrl包含ProductDetails页面的 API URL 。
现在,我们需要ProductDetails在新版本的应用程序中对API的响应进行一些更改,并且需要对其进行版本控制。URL 将更改为 - /api/v2/products/{id}(我们通过 URL 使用 API 版本控制)。
由于我们不想要以前版本的应用程序中的新响应,我们需要创建一个新版本的ProductsAPI也将发送新的ProductDetailsAPIurl 作为响应。
API 以这种方式耦合。如果我们更改任何子 API 的版本,则父 API 版本也需要更改。处理此问题的推荐方法是什么?我们是否应该改变我们的 API 版本控制方式(使用标头或其他东西)?
这是 URL 段中版本控制的后果之一。我建议不要这样做。对于 HATEOAS,超媒体应该只报告相关资源的身份。由客户决定他们想要使用哪个 API 版本。
在大型 API 中,服务版本不一致是很常见的。这会导致在提供的链接中包含 API 版本的任何方法出现许多问题。
api/orders1.0 和api/salespeople2.0。服务无法知道这一点,这是客户端的责任。如果服务烘焙链接中的版本,它可能不是客户想要的,使其在 HATEOAS 的上下文中几乎毫无价值在我看来,api/products/123和之间没有逻辑上的区别api/v2/products/123。归根结底,这两个 URL 都指代标识符为 123 的产品。 API 版本表示该产品的不同表示,但不是不同的产品。为此,HATEOAS 实现应以 的形式返回链接,api/products/123并让客户端使用查询字符串、标头、媒体类型等来决定 API 版本的表示形式。 URL 段方法是唯一不能以这种方式工作的方法.
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |