我正在构建一个REST api。我想要解决的问题的一个简单示例涉及2个域实体:posts&评论。目前,对http://myapidomain.com/posts的GET请求会返回一组帖子,其中每个帖子都包含指向此特定帖子的评论的链接。我还允许在响应中扩展注释链接,以便注释列表显示在行中,而不是指向它们的URL。每种方法都有利弊,但包含两种方案的充分理由。
我的问题是,例如我对/ posts的GET请求返回一个分页列表(例如页面大小为10)的帖子,其中包含评论列表而不仅仅是一个链接...我需要吗?要分页嵌套资源呢?我担心单个帖子可以有无限数量的评论,因此10个帖子的列表可能有一个或多个帖子,其中一个帖子有100多条评论。内部/嵌套资源也需要被分页,还是有一些标准的方法来处理这种情况?
答案 0 :(得分:2)
包含收集子资源的链接是一种很好的做法。如果客户端需要集合,则可以执行对链接的新请求。
但是,如果由于某种原因,您需要为每个帖子预先加载一些评论,我会考虑只包含评论的第一页并提供加载下一页的链接。
{
"data": [
{
"id": 1,
"title": "It's a post",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit...",
"comments": {
"data": [
{
"content": "It's a comment",
"author": "John Doe"
},
{
"content": "It's comment",
"author": "Jane Doe"
},
...
],
"paging": {
"next": "http://api.example.com/posts/1/comments?page=2&size=10"
}
}
},
...
],
"paging": {
"previous": "http://api.example.com/posts?page=1&size=10",
"next": "http://api.example.com/posts?page=3&size=10"
}
}