好的,假设我们有两个实体:简介 , 由 id
组成, name 和 ~10 个不相关的字段,以及 发表 , 由 text
组成, title
, 它是 author
(轮廓)。此外,还有资源/feed 返回包含来自不同配置文件的帖子的提要。
所以我有两个选择:
哪种方式更快(在前端使用它)和更方便(RESTy,如果你喜欢)。
最佳答案
显然只是发送id
的 Profile
更快,因为响应长度更小。
然而,重要的问题是您是否需要完整的 Profile
每个 Post
的对象?例如,如果您想打印出每个 Post
的作者姓名。然后发送完整的对象更有意义。但是,如果您只想为每个 Post
提供作者链接(在前端)然后是 id
应该足够了。
对于查询您的 Post
的其他服务只需发送 id
并让他们在需要时打第二个电话。如果需要,他们可以随时缓存数据。
尝试构建您的服务,以便每个调用/端点返回 最低限度 理解响应所需的数据量。这可能意味着 Post
包含精益 Profile
仅包含名称但排除所有其他“不相关”字段的对象。但是当您查询 Profile
直接,你得到完整的对象。
你也可以有一个可选的查询参数,调用者可以指定他们是否只需要id
。或完整的Profile
,这是一个策略Atlassian JIRA用于保留带宽和提高速度。
另请查看 hal+json
规范,它可以为您提供有关如何设计更可用和更透明的 REST 服务的好主意。
最重要的 !您的端点应该只返回外部世界可以实际使用和理解的数据。这意味着如果 Profile
有一个字段/字段,其值仅用于您的后端(例如,用户的密码),那么您永远不应该将它们泄露出去。
关于rest - 我应该返回关联实体还是整个实体的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685396/