好的,我们假设我们有两个实体:个人资料,由id
,名称和~10个不相关的字段组成,发布,由{{组成1}},text
,它是title
(个人资料)。此外,还有资源 / feed ,它返回包含来自不同配置文件的帖子的Feed。
所以我有两个选择:
哪种方式更快(就前端使用而言)更方便(RESTy,如果你愿意的话)。
答案 0 :(得分:3)
显然,发送id
Profile
的速度更快,因为响应时间较短。
但重要的问题是,您是否需要每个Profile
的完整Post
对象?例如,如果您想打印出每个Post
的作者姓名,那么发送完整对象会更有意义。但是,如果您只想为每个Post
提供一个指向作者的链接(在前端),那么id
就足够了。
对于查询您的Post
的其他服务,只需发送id
并让他们在需要时再拨打第二个电话。如果需要,他们总是可以在最后缓存数据。
尝试构建您的服务,以便每个呼叫/端点返回理解响应所需的最小数据量。这可能意味着Post
包含精简Profile
对象,其中仅包含名称,但排除了所有其他“无关”字段。但是,当您直接查询Profile
时,您将获得完整的对象。
您还可以使用可选的查询参数,其中调用者可以指定他们是仅需要id
还是完整的Profile
,这是一种用于保留带宽和改进的策略Atlassian JIRA速度。
同时查看hal+json
规范,它可以为您提供有关如何设计更实用,更透明的REST服务的好主意。
最重要!您的端点应该只返回外部世界可以实际使用和理解的数据。这意味着如果Profile
有一个字段/字段,这些字段只在后端使用(例如,用户的密码),那么你就不应该泄露它们。