问题标签 [graphql-federation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
59 浏览

graphql - GraphQL 联合:如何消费,而不是扩展

我有一个返回Products 的服务,我可以通过 GraphQL Federation 在返回Reviews 的服务中扩展它。审查服务取决于Products,这种解耦简直太棒了!

我还有一个订单服务,它存储(除其他外)OrderItem具有productId

现在我希望客户端也能够直接从Product被引用的字段中选择任何字段productId

如果我编写了一个普通的解析器来添加该product字段,我将不得不复制完整的Product模型(并在更改时更新订单服务Product)。我不想那样。我也想在这里利用联邦。

我希望订单服务扩展(并因此依赖)Product,但只知道它的 id,而产品服务必须不知道任何关于订单服务的信息。所以这是在审查服务中看到的依赖关系的反转。我不想从另一个服务添加到模型中,我希望客户端能够使用它,而我的服务不知道细节。

我认为这种方式应该更容易,但我太盲目了,看不到我需要做什么!我找不到这样的例子或教程或任何东西。

我将衷心感谢您的帮助!

0 投票
1 回答
344 浏览

graphql - 联合 GraphQL 模式验证

我在我的项目中创建了 3 个微服务并实现了 GraphQL Netflix DGS 联合框架。https://netflix.github.io/dgs/ 作为一家公司,我们拥有来自不同团队的不同微服务的 30 多个模式。但是,如果模式类型名称在不同的微服务中相互重复,我们会在 Apollo 网关中遇到运行时错误。我想知道如何验证模式?是否有任何引擎/库/概念来验证多个微服务等上的联合 GraphQL 模式?我正在检查架构注册表,但看起来它是用于存储架构和版本控制等,而不是完全验证架构。示例架构和错误:服务 1 中的架构:

服务 2 中的模式:

在上述两个模式中,模式类型“Info”在两个微服务中是相同的。通过 ApolloGateway 实现这两个服务后,它抛出运行时错误:“此数据图缺少有效配置。无法组合有效模式。发现以下组合错误:只能有一种名为“信息”的类型

0 投票
1 回答
184 浏览

typescript - GraphQL Playground 引导循环(Nestjs)

我正在尝试使用 GQL Playground。我加入了一个迄今为止从未使用过它的团队,每当我点击 时http://localhost:8001/graphql,我都可以看到 GQL Playground 加载徽标,但它正在引导循环。

我可以看到他们正在使用 GQL Federation(但我不知道它是如何工作的):

如果我尝试添加以下 GraphQLModule,应用程序会崩溃:

我有一个 Docker 配置。它可能会干扰,但我不确定。

我怎样才能让 GQL Playground 正常工作?

0 投票
1 回答
176 浏览

graphql - 使用 API 密钥查询 GraphQL 微服务?

我在这两个微服务之上开发了两个 Netflix DGS GraphQL 微服务和 Apollo Gateway,使它们成为一个联合的 graphql。我有一个客户端应用程序正在尝试查询两个 graphql 微服务。并且这两个微服务都有一个唯一的 API 密钥。我们如何从客户端或 Apollo 服务器为多个微服务分配 API 密钥?当客户端使用 API 密钥查询多个微服务时,服务器可能会忽略 API 密钥。是否有处理 API 密钥管理的最佳实践?

0 投票
0 回答
25 浏览

graphql - Graphql 联合与模式拼接。何时选择一个而不是另一个

我对这两个概念都很陌生,所以如果它是基于意见的,请原谅。目前,我正在研究 graphql-tools 包提供的 Apollo Federation 和模式拼接,尽管我猜它适用于类似的包。是否可以创建一个表格之类的东西来描述某些要求/条件以使其优先于另一个?

0 投票
0 回答
143 浏览

jestjs - 以开玩笑的方式运行 e2e 测试时无法 POST /graphql (404) 错误(GraphQL Federation)

我正在尝试在 Nest.js 应用程序中使用 supertest + jest 端到端测试我的 graphql 服务,但不断收到此错误:

错误:无法 POST /graphql (404)

我已经尝试了很多事情,但由于该错误而无法完全运行测试。

下面是我的测试文件:

以下是登录控制台后出现的错误:

0 投票
0 回答
159 浏览

graphql - 字段只能定义一次 graphql

我有 2 个子图

在此处输入图像描述

我在模板和文件服务器的子图中有这段代码

在此处输入图像描述

我调用 buildFederatedSchema 2 次,因为我在服务器中有 2 个子图列出了修改后的 buildFederatedSchema 中的代码

在此处输入图像描述

给我这个错误我该怎么办?

在此处输入图像描述

0 投票
2 回答
195 浏览

node.js - Apollo 服务器联盟与 graphql-shield

graphql-shield用来保护一个subgraph.

在我的构建过程中,我rover CLI用来更新supergraph schemaApollo Studio 中的:

更新失败,rover因为权限屏蔽引发Not Authorised!错误。

我如何保护subgraphgraphql-shield允许SubgraphIntrospectQuery操作?

我了解可以将承载令牌添加到流动站自省命令:

但是,我无法在构建过程中生成访问令牌。

0 投票
0 回答
13 浏览

javascript - Graphql Federation:JS 测试框架

我正在寻找 JS 测试框架或一些解决方案来测试 GraphQL 联合实施。

我当前的实现是在 Apollo Server、Gateway 和 subgraph 中。

我想测试涉及多个子图的联合查询。这个堆栈有什么建议吗?

0 投票
0 回答
51 浏览

graphql - 使用 google pub/sub 和 Graphql federation 的事件驱动架构

我们正在设计一个使用 Graphql federation 和 google pub/sub 的微服务架构来处理服务之间的相互通信。Graphql Federation 将用于使用 REST api 调用从客户端查询数据。

当涉及到多个微服务中的 Graphql 突变时(仍然客户端会发送 http 请求进行突变),将使用 google pub/sub。我对这个架构有几个问题?

  1. 它是一个好的架构吗(因为我们使用 Graphql 联合使用 http 调用来获取数据,并使用 pub/sub 来处理服务中的其余操作)?
  2. 当涉及到事件驱动架构时,客户端应该如何工作?希望我们可以使用 REST 调用从客户端获取/更新数据,还是应该对每个操作使用 pub/sub?