【问题标题】:User specific data for items in a REST apiREST api 中项目的用户特定数据
【发布时间】:2017-08-26 22:53:17
【问题描述】:

在 REST api 中,处理项目的用户特定数据的最有效方法是什么?

例如,假设有item 资源可以收藏。可以通过以下方式访问项目列表:

https://myservice.com/api/items (Full list)
https://myservice.com/api/items/{id} (Single item)

返回

{
  { 'name': 'name 1' },
  { 'name': 'name 2' },
}

每个项目都可以被用户 (https://myservice.com/api/user/{id}) 收藏,这些收藏的列表可在以下位置获得:

https://myservice.com/api/user/{id}/favorites

整个设置是无状态的;但是,可能有数百个收藏夹,可能不需要检索完整列表。

问:在维护无状态系统的同时,将获取项目与用户特定数据相结合的最佳方式是什么?

即获取用户特定的项目列表是否明智或合理:

https://myservice.com/api/items?user={id}
{
  { 'name': 'name 1', 'isFavourite':true },
  { 'name': 'name 2', 'isFavourite':false },
}

【问题讨论】:

    标签: rest api stateless


    【解决方案1】:

    在维护无状态系统的同时,将获取项目与用户特定数据相结合的最佳方式是什么?

    想想你将如何在网站上做到这一点。这就是你在 REST 中的做法;你只需要让它机器可读。

    整个设置是无状态的;但是,可能有数百个收藏夹,可能不需要检索完整列表。

    在这种情况下,您可以将列表分布在多个资源中,然后使用paging 帮助消费者找到返回列表的下一页/上一页的资源。

    获取用户特定的项目列表是否合理或合理

    是的,当然。要认识到的关键思想是您的 REST API 是您的集成域的一部分;您假装是一个充满“网页”的网站,并将对 Web 资源的操作转化为应用程序中的操作/查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2019-10-18
      • 2016-01-09
      • 2017-05-26
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多