我应该 return 关联实体或整个实体的 ID
Should I return id of associated entity or whole entity
好的,假设我们有两个实体:Profile,由 id
、名称和 ~10 个不相关的字段组成,以及 Post,由text
、title
组成,是author
(简介)。此外,资源 /feed returns 包含来自不同个人资料的帖子。
所以我有两个选择:
- 在作者
中发送完整的个人资料实体
- 发送作者id(有一种方法可以单独请求Profiles)
哪种方式更快(就前端使用而言)和更方便(RESTy,如果您愿意)。
显然只发送 Profile
的 id
更快,因为响应长度更小。
然而,重要的问题是每个 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 哪些值只在你的后端使用(例如,用户的密码)那么你不应该泄露那些。
好的,假设我们有两个实体:Profile,由 id
、名称和 ~10 个不相关的字段组成,以及 Post,由text
、title
组成,是author
(简介)。此外,资源 /feed returns 包含来自不同个人资料的帖子。
所以我有两个选择:
- 在作者 中发送完整的个人资料实体
- 发送作者id(有一种方法可以单独请求Profiles)
哪种方式更快(就前端使用而言)和更方便(RESTy,如果您愿意)。
显然只发送 Profile
的 id
更快,因为响应长度更小。
然而,重要的问题是每个 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 哪些值只在你的后端使用(例如,用户的密码)那么你不应该泄露那些。