Apollo graphql 常见类型冲突
Apollo graphql common type conflict
我开始使用模式拼接,虽然类型不冲突,但一切正常。
但我现在正在合并三个模式,我在本地模式和另一个远程模式上有 PageInfo 和 Edge。类型 Edge 和 PageInfo 在两者上完全不同,我只需要在本地架构上使用本地 PageInfo 和 Edge,在远程上使用远程。
已经尝试了所有 3 个模式拼接示例来解决类型冲突,但没有任何帮助。
https://www.advancedgraphql.com/content/schema-stitching/ex1
模式拼接存在(许多不同的)已知问题,您目前遇到了其中之一。 Apollo 已弃用模式拼接并最近发布 Federation 来替换它。
事实证明,拼接需要大量工作,如果下面的 API 意识到他们正在为单个模式做出贡献,拼接就会变得容易得多。
如果您将无法控制的 API 拼接在一起,您将需要不同的解决方案。简单的解决方案可能是使用 GraphQL Binding 之类的东西并在您的架构中复制所需的部分,然后委托给下面的 API。这样做的好处是,当第三方 API 更改时,您的 架构不会在运行时随机更改或中断。还有很多工具允许从外部模式文件将类型导入模式文件。
我开始使用模式拼接,虽然类型不冲突,但一切正常。
但我现在正在合并三个模式,我在本地模式和另一个远程模式上有 PageInfo 和 Edge。类型 Edge 和 PageInfo 在两者上完全不同,我只需要在本地架构上使用本地 PageInfo 和 Edge,在远程上使用远程。
已经尝试了所有 3 个模式拼接示例来解决类型冲突,但没有任何帮助。
https://www.advancedgraphql.com/content/schema-stitching/ex1
模式拼接存在(许多不同的)已知问题,您目前遇到了其中之一。 Apollo 已弃用模式拼接并最近发布 Federation 来替换它。 事实证明,拼接需要大量工作,如果下面的 API 意识到他们正在为单个模式做出贡献,拼接就会变得容易得多。
如果您将无法控制的 API 拼接在一起,您将需要不同的解决方案。简单的解决方案可能是使用 GraphQL Binding 之类的东西并在您的架构中复制所需的部分,然后委托给下面的 API。这样做的好处是,当第三方 API 更改时,您的 架构不会在运行时随机更改或中断。还有很多工具允许从外部模式文件将类型导入模式文件。