RESTAPI-一对零或一关联

RESTAPI-一对零或一关联,api,rest,Api,Rest,我试图找到一种与一对零或一个协会合作的好方法 我有两个资源。第一个资源与第二个资源有一对零或一个关联 (在下面的示例中,我将使用页面和行。您可以认为页面只能有“一”或“零”行) 首先,我想到使用这种方法检索数据: /api/pages/:id/ 当页面只有一行时 { "id": 1, "name": "Test", "line": { "id": 10, "

我试图找到一种与一对零或一个协会合作的好方法

我有两个资源。第一个资源与第二个资源有一对零或一个关联

(在下面的示例中,我将使用页面和行。您可以认为页面只能有“一”或“零”行)

首先,我想到使用这种方法检索数据:

/api/pages/:id/
当页面只有一行时

{
  "id": 1,
  "name": "Test",
  "line": {
    "id": 10,
    "name": "aaa"
  }
}
当页面没有一行时

{
  "id": 1,
  "name": "Test"
}
这样,当开发人员得到一个页面列表时,他就不需要向API发出更多的请求来获得每个页面的行。
但是如果页面没有一行,那么最好的方法是避免显示“行”并在文档中解释它吗?或者添加一个名为“has_line”的布尔值?

另一种解决方案是

{
  "id": 1,
  "name": "Test",
  "lines": [{
    "id": 10,
    "name": "aaa"
  }]
}


但如果你确定以后不会有更多的台词,那么我会坚持你的方法。无论您选择哪种方法,都需要对其进行记录。不需要hasLine布尔值。

谢谢您的帮助。是的,我肯定以后不会有更多的台词了。所以,当开发者获得数据时,他会检查是否有一条线,对吗?@Steven是的,这是他们的责任。你需要把它记录下来,这样他们才会知道。那太好了。再次感谢你。祝您今天过得愉快!
{
  "id": 1,
  "name": "Test",
  "lines": []
}