【问题标题】:What is the best practice to get related/nested data from REST API?从 REST API 获取相关/嵌套数据的最佳实践是什么?
【发布时间】:2017-03-16 10:00:47
【问题描述】:

例如:我们有一个 User 模型,它又包含多个 Company 实体。我看到了 2 个解决方案:

1) 古典。制作如下 API:

/users/ 
/users/3/ 
/users/3/companies/ 

并分别发出/userscompanies 请求。但是,如果我们需要在一个视图中同时拥有user 和他/她的companies 信息(在 Angular2 上) - 我们需要向服务器发送 2 个请求。

2) 将相关/嵌套数据放入一级对象模型中。请求中:

/users/3/ 

服务器将提供有关用户及其公司的信息。在这种情况下,我们会获得 1 个请求的所有信息。但同样,该公司拥有无限数量的存储实体。如果在一个单独的视图中需要它们怎么办?

我更倾向于第一个选项,但我对 REST 样式的描述感到困惑:“视图必须完全代表资源。”满足此要求可以导致将资源划分为子资源,并因此导致更小的表示。 "

请提供建议,由于缺乏经验,我怀疑在这种情况下哪种决定是正确的。哦,是的,我忘记了,使用 Django-Rest-Framework 的 Django (Python) 后端 - 所有这一切都是 1000 名用户的 SaaS。

【问题讨论】:

    标签: rest api http django-rest-framework client-server


    【解决方案1】:

    Approach 1 是 REST 的理想方法。但是,在设计用于在 UI 上显示信息的 API 时,它涉及的不仅仅是根据资源对 API 进行分区。

    所以我建议在User API 中包含Company 信息。但是正如您所建议的,Company 对象可以有非常大的Storage 对象列表,在这种情况下,我建议仅将Company 模型的必要和充分字段包含到User API 中。这样您就可以渲染一个视图。稍后当用户展开Company 部分时,您可以从/company/<id> API 中提取剩余字段。

    这样,对于用户不查找Company 详细信息的命中,您将有更少的 API 调用,并且您的 API 也将是轻量级的。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 2019-10-21
      • 2011-11-19
      • 2017-11-04
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2021-05-12
      • 2016-07-23
      相关资源
      最近更新 更多