Rest API是否可以在资源内返回单个用户数据?

She*_*tal 5 rest api-design

举例来说,假设我有一个API,用于处理将图书的详细信息传递回移动应用程序的情况。用户可以浏览书籍列表,并将书籍添加到他们的愿望清单。

我的问题是,在退回一本书或一本书集时,将特定于用户的信息包含在每本书资源中是一种好习惯吗?我的意思是,每本书都可以包含一个字段,该字段表示该书是否在用户的愿望清单中,或者将此清单单独返回并由移动应用程序来执行此检查。

移动应用程序开发人员希望拨打/ books并收到类似以下内容的响应;

{
  "books": [
    {
      "id":1,
      "name": "How to be good at everything",
      "price": 3.99,
      "in_wish_list": true
    },
    {
      "id":2,
      "name": "How to be good at nothing",
      "price": 6.50,
      "in_wish_list": false
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我认为我希望将这些数据分散到多个端点。

/ user / 29 /收藏

{
  "wishlist": [1,7,9,34,28]
}
Run Code Online (Sandbox Code Playgroud)

/图书

{
  "books": [
    {
      "id":1,
      "name": "How to be good at everything",
      "price": 3.99
    },
    {
      "id":2,
      "name": "How to be good at nothing",
      "price": 6.50
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这样,移动应用程序负责确定书籍是否在用户的愿望清单中。

我可以看到将用户数据嵌入到书本资源中的好处,但是感觉不对。

我想知道其他人如何处理这种情况吗?

Ale*_*scu 0

现在,这完全取决于谁将使用您的 API 以及如何使用。如果需要显示用户心愿单上的书籍,则必须有一个单独的端点。当然,移动客户端开发人员会更喜欢一个大的调用而不是多个较小的调用,但您也可以妥协并拥有一个单独的用户愿望清单端点(同样,如果有这样的用例场景),并为每本书返回一个布尔值 - 这样,对您的 API 的调用次数甚至可能会减少。