为什么要添加指向REST API响应的链接?

时间:2018-08-14 13:07:12

标签: rest

开发人员为什么要添加指向REST API响应的链接?例如,在此tutorial的分页响应中。

{
    "_links": {
        "self": {
            "href": "http://example.org/api/user?page=3"
        },
        "first": {
            "href": "http://example.org/api/user"
        },
        "prev": {
            "href": "http://example.org/api/user?page=2"
        },
        "next": {
            "href": "http://example.org/api/user?page=4"
        },
        "last": {
            "href": "http://example.org/api/user?page=133"
        }
    }
    "count": 3,
    "total": 498,
    "_embedded": {
        ...
    }
}

在前端生成这样的链接非常容易。

1 个答案:

答案 0 :(得分:0)

对此有多种看法。因此,在我的回答中,我戴了一个想要添加这些链接的人的帽子。原因如下:

  1. 逻辑少的客户很好。您可能有多个客户端,所以不必重新实现相同的逻辑。
  2. 它允许服务器完全更改逻辑,而不必更新客户端。例如,现在您使用?page=x进入下一页,但是这种特定的分页方法可能会给某些比例尺/某些数据集带来问题。如果您想更改为例如?offset=x,客户端将透明地升级。
  3. 如果next链接不存在,它也很容易告诉客户没有下一页。
  4. 这与先前的原因有些重叠,但是,如果要创建由多个服务器实施的API标准,则不会强制服务器实施特定的分页策略。通过使用链接,您基本上可以为API的其他实现打开方便之门,以选择更适合其基础结构的不同分页策略。
  5. 这是一个“统一界面”。 API中的所有内容都是资源(包括“下一页”页面),这意味着所有内容的行为通常相同。不仅页面应该像这样工作,而且其他类型的关系也应如此。例如,也许您的“用户”是“组”的一部分。不要指定“ groupId”,请指定组链接。

最后,您也许可以为此轻松生成简单的通用HTML接口,这可能对您的开发人员很有用。有很多HAL浏览器。