在资源集合上返回元数据的RESTful方法是什么?

时间:2019-10-29 13:08:30

标签: rest api

说我有一个用于访问用户通知的REST API。我有一个用于获取所有通知的端点:

GET https://server:443/api/notifications

哪个返回以下响应:

[
  {
    "status": "unread",
    "_id": "5db8228d710ab4b1e33f19b2",
    "title": "Some title",
    "time": "2019-10-29T11:29:17.402Z",
    "details": "Some details...",
    "user": "user1"
  },
  {
    "status": "unread",
    "_id": "5db8228d710ab4b1e33f19b3",
    "title": "Some title",
    "time": "2019-10-29T11:29:17.411Z",
    "details": "Some other details",
    "user": "user2"
  },
]

现在,我还希望能够在单个请求中检索每个用户的通知量,对此的响应将类似于:

[
  {
    "user": "user1",
    "count": 1
  },
  {
    "user": "user2",
    "count": 1
  },
]

按照REST约定,什么是最好的方法?

1 个答案:

答案 0 :(得分:1)

  

按照REST约定,什么是最好的方法?

REST确实不能回答这个问题。 REST告诉您您有资源,但实际上并没有就资源的“边界”应位于何处提供任何意见。

再次考虑“网页”。您可以将摘要添加到描述通知的网页上,这样就可以了。或者,您可以决定将通知描述在一个网页上,将摘要描述在另一个网页上,然后 就可以了。

REST告诉您的是缓存很重要;因此,如果您认为摘要数据的缓存控件应该与通知数据不同,那么您应该考虑将这些数据分成不同的资源。如果您认为摘要数据和通知数据需要同步,则它们更有可能属于同一资源。

当然,REST中没有任何内容表明您不能拥有多个返回“相同”数据的资源。

如果您希望摘要成为通知资源的一部分,并且希望该信息可以独立识别,则可以使用一个片段来描述摘要“子资源”;也许https://server:443/api/notifications#summary