首页 > 解决方案 > 何时使用显式关系 - 模式设计

问题描述

我正在思考关于显式与隐式关系的架构设计何时...

例如:在具有 2 个自定义类型 author 和 post 的虚构模式中,每个类型都有多个属性,post 类型可以通过以下两种方式之一引用作者:

  1. 显式:具有 Autor 类型属性
  2. 隐含的:具有间接指向作者的标量值

在设计shema时。在这种决策中,我的指南针应该是什么?提前致谢

标签: graphql

解决方案


当您可以公开一个返回整个资源的字段时,只返回相关资源的 ID 对客户端绝对没有任何价值。仅公开 ID 将意味着客户端必须向您的服务发出后续请求以获取相关资源,而不是能够在一个请求中获取整个数据图。

在其他服务的上下文中,例如 REST API,只返回相关资源的 ID 或 URL 可能是有意义的。这是因为在这些情况下,有效负载的大小是固定的,因此默认情况下返回每个相关资源可能会快速且不必要地使响应膨胀。然而,在 GraphQL 中,请求负载是客户端驱动的,所以这不是问题——客户端总是会得到它所要求的。如果客户端需要作者的 ID,他们仍然可以通过该字段仅获取该字段——同时允许在其他请求中或由其他客户端获取author更完整的对象。Author


推荐阅读