有没有办法为两个或多个 GraphQL 服务生成聚合的 schema.json?

Posted

技术标签:

【中文标题】有没有办法为两个或多个 GraphQL 服务生成聚合的 schema.json?【英文标题】:Is there a way to generate the aggregated schema.json for two or more GraphQL services? 【发布时间】:2021-10-27 02:30:45 【问题描述】:

我在一个联合下有几个 GraphQL 服务。 我启动一项服务并下载该特定服务的 schema.json:

apollo schema:download --endpoint=http://localhost:9001/graphql schema.json

我已经按照这个下载了 schema.json -> https://www.apollographql.com/docs/ios/downloading-schema/

类似:

apollo schema:download --endpoint1=http://localhost:9001/graphql --endpoint2=http://localhost:9002/graphql ... schema.json

【问题讨论】:

【参考方案1】:

我认为没有办法用 apollo cli 做到这一点。但是,您可以执行以下操作:

apollo schema:download --endpoint=http://localhost:9001/graphql schema1.json
apollo schema:download --endpoint=http://localhost:9002/graphql schema2.json

在您可以使用任何您想要的合并工具合并两者之后。

另一种方法是 npm 包GraphQL Code Generator。您可以在此处指定更多架构来源。

【讨论】:

你能推荐我可以使用的任何好的合并工具吗? 我不熟悉架构的 json 结构,它还取决于您的环境。但是wiki.ubuntuusers.de/jq 在很多情况下是一个不错的选择。

以上是关于有没有办法为两个或多个 GraphQL 服务生成聚合的 schema.json?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 @apollo/react-hooks 访问多个 graphql 突变的选项

有没有办法将 Java 服务器中的 GraphQL 查询转换为 SPARQL 查询?

有没有办法从 protobuf 生成 GraphQL 模式?

有没有办法从 datamodel.prisma 文件生成 schema.graphql 文件?

Apollo GraphQL,有没有办法在查询期间操作正在写入缓存的数据?

有没有办法通过放大 GraphQL 转换 @searchable 注释来控制自动生成的弹性搜索索引?