好的,假设我们有两个实体:Profile, 包含由...组成id
、名称和 ~10 个不相关的字段,以及Post, 包含由...组成text
, title
,它是author
(轮廓)。还有资源/feed返回包含来自不同配置文件的帖子的提要。
所以我有两个选择:
- 发送完整Profile作者中的实体
- 如果(有一种方法可以请求Profiles分别地)
哪种方式更快(就在前端使用而言)更方便(RESTy,如果你喜欢的话)。
显然只是发送id
of Profile
速度更快,因为响应长度更短。
然而,重要的问题是,您是否需要完整的Profile
对象与每个Post
?例如,如果您想打印出每个内容的作者姓名Post
那么发送完整的对象就更有意义了。但是,如果您只想为每个内容提供作者的链接Post
(在前端)然后id
应该足够了。
对于查询您的服务的其他服务Post
只需发送id
并让他们在需要时拨打第二个电话。如果需要,他们总是可以在自己的一端缓存数据。
尝试构建您的服务,以便每个调用/端点返回最低限度理解响应所需的数据量。这可能意味着Post
含有瘦肉精Profile
仅包含名称但排除所有其他“不相关”字段的对象。但是当你查询一个Profile
直接,你就得到了完整的对象。
您还可以有一个可选的查询参数,调用者可以在其中指定他们是否只需要id
或完整的Profile
,这是一个策略Atlassian JIRA https://docs.atlassian.com/jira/REST/cloud/#expansion用于保留带宽并提高速度。
另请查看hal+json http://stateless.co/hal_specification.html规范,它可以为您提供有关如何设计更可用和透明的 REST 服务的好主意。
最重要的!您的端点应该只返回外界可以实际使用和理解的数据。所以这意味着如果Profile
有一个或多个字段,其值仅在您的后端使用(例如用户的密码),那么您永远不应该泄露这些值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)