GraphQL 拼接 VS 合并模式

Posted

技术标签:

【中文标题】GraphQL 拼接 VS 合并模式【英文标题】:GraphQL stitching VS merging schemas 【发布时间】:2021-10-30 05:12:02 【问题描述】:

合并和拼接 GraphQL 模式之间的实际区别是什么?当涉及到每个实现的用例时,graphql-tools 文档(合并:https://www.graphql-tools.com/docs/schema-merging,拼接:https://www.graphql-tools.com/docs/schema-stitching/stitch-combining-schemas)有点模棱两可。如果我理解正确,拼接只是组织偏好的问题,每个子方案都成为您方案的“代理”,而合并功能似乎与我非常相似。你能解释一下区别吗?谢谢!

【问题讨论】:

【参考方案1】:

当您想在同一个查询中从多个 GraphQL API 检索数据时,使用模式拼接(这基本上是 GraphQL 背后的动机)。 例如,您可能必须从两个 GraphQL API 中提取数据——一个为您提供有关位置的信息,另一个 GraphQL API 提供有关天气的信息。要执行同时访问两个端点的查询,您必须缝合两个端点的模式,这将允许您执行这样的查询(这也显示了两个端点之间的链接) :


  event(id: "5983706debf3140039d1e8b4") 
    title
    description
    url
    location 
      city
      country
      weather 
        summary
        temperature
      
    
  

另一方面,模式合并是指收集所有基于域拆分的模式,主要用于组织目的。模式合并不会保留各个子模式。

【讨论】:

以上是关于GraphQL 拼接 VS 合并模式的主要内容,如果未能解决你的问题,请参考以下文章

模式拼接两个远程 Prisma/GraphQL 模式

使用身份验证的 graphql 模式拼接

Apollo Graphql 模式拼接冲突

无法从模式拼接中的另一个 schema.graphql 文件中的其他 schema.graphql 文件访问共享模式

处理子查询中的 graphql 模式拼接错误

GraphQL 模式拼接选择集中是不是禁止使用列表类型的字段?