例如:我们有一个用户模型,后者又有几个公司实体。我看到了两个解决方案:
1)经典。制作如下的API:
/users/
/users/3/
/users/3/companies/
并单独发出/users
或companies
请求。但是,如果我们需要在一个视图中(在Angular2上)同时拥有user
和他/她的companies
信息 - 我们需要向服务器发送2个请求。
2)将相关/嵌套数据放在level-1对象模型中。在请求中:
/users/3/
服务器将提供有关用户及其公司的信息。在这种情况下,我们获得1个请求的所有信息。但同样,该公司拥有无限数量的存储实体。如果在一个单独的视图中需要它们怎么办?
我更倾向于第一种选择,但我对REST风格的描述感到困惑:“视图必须完全代表资源。”满足此要求可能导致将资源划分为子资源,并因此导致较小的表示。 “
请帮助建议,我怀疑缺乏经验,在这种情况下哪些决定是正确的。哦,是的,我忘记了,使用Django-Rest-Framework对Django(Python)进行后端处理 - 所有这些都是为大约1000名用户提供的SaaS。
答案 0 :(得分:0)
Approach 1
是REST的理想方法。但是,当设计用于在UI上显示信息的API时,它涉及的不仅仅是根据资源对API进行分区。
因此,我建议在Company
API中添加User
信息。但正如您所建议的,Company
对象可以包含非常大的Storage
个对象列表,在这种情况下,我建议仅将Company
模型中必要且充足的字段包含到User
API中。这样您就可以渲染一个视图。然后,当用户展开Company
部分时,您可以从/company/<id>
API中提取剩余字段。
这样,对于用户不会查找Company
详细信息的匹配,您将获得较少的API调用,并且您的API也会轻量级。