我应该 return 关联实体或整个实体的 ID

Should I return id of associated entity or whole entity

好的,假设我们有两个实体:Profile,由 id、名称和 ~10 个不相关的字段组成,以及 Post,由texttitle组成,是author(简介)。此外,资源 /feed returns 包含来自不同个人资料的帖子。

所以我有两个选择:

  1. 在作者
  2. 中发送完整的个人资料实体
  3. 发送作者id(有一种方法可以单独请求Profiles

哪种方式更快(就前端使用而言)和更方便(RESTy,如果您愿意)。

显然只发送 Profileid 更快,因为响应长度更小。

然而,重要的问题是每个 Post 都需要完整的 Profile 对象吗?例如,如果您想打印出每个 Post 的作者姓名,那么发送完整的对象更有意义。但是,如果您只想向作者提供每个 Post(在前端)的 link,那么 id 就足够了。

对于查询您的 Post 的其他服务,只需发送 id 并让他们在需要时进行第二次呼叫。如果需要,他们可以随时缓存数据。

尝试构建您的服务,使每个 call/endpoint return 都是理解响应所需的 最低限度 数据量。这可能意味着 Post 包含精简的 Profile 对象,其中仅包含名称,但排除所有其他 "irrelevant" 字段。但是当你直接查询一个 Profile 时,你会得到完整的对象。

您还可以有一个可选的查询参数,调用者可以在其中指定他们是只想要 id 还是完整的 Profile,这是 Atlassian JIRA 用来保留带宽的策略并提高速度。

另请查看 hal+json 规范,它可以为您提供有关如何设计更易用和透明的 REST 服务的好主意。

最重要!您的端点应该只有 return 外界可以实际使用和理解的数据。所以这意味着如果 Profile 有一个 field/fields 哪些值只在你的后端使用(例如,用户的密码)那么你不应该泄露那些。