什么';返回资源集合元数据的RESTful方式是什么?

什么';返回资源集合元数据的RESTful方式是什么?,rest,api,Rest,Api,假设我有一个用于访问用户通知的RESTAPI。我有一个用于获取所有通知的端点: GET https://server:443/api/notifications 返回以下响应: [ { "status": "unread", "_id": "5db8228d710ab4b1e33f19b2", "title": "Some title", "time": "2019-10-29T11:29:17.402Z", "details": "Some det

假设我有一个用于访问用户通知的RESTAPI。我有一个用于获取所有通知的端点:

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约定而言,最好的方法是什么

就REST约定而言,最好的方法是什么

REST真的不能回答这个问题。REST告诉你你有资源,但它实际上并没有提供任何关于资源“边界”应该在哪里的意见

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

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

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

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

就REST约定而言,最好的方法是什么

REST真的不能回答这个问题。REST告诉你你有资源,但它实际上并没有提供任何关于资源“边界”应该在哪里的意见

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

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

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

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