问题标签 [apollo-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.
graphql - 变异输入在两个 Apollo GraphQL 联合服务之间拆分
我的图表中有一个使用两个数据源的突变。我们正在将其中一个数据源迁移到联合服务。联合服务中的该数据源使用来自被调用突变的部分输入。发起服务也使用输入的一部分。例如:
我需要将一部分传递VerifyUserInput
给不是实体 PK 的其他服务。__resolveReference
我在函数中找不到输入reference
(显然,因为引用只传递类型名和 PK)context
、或info
args。突变的原始输入是否在联合服务中可用?如果是这样,我该如何找回它?
java - GraphQL Federation:是否有 Java Springboot 网关
Java / SpringBoot 中是否有 GraphQL 联合网关。在java中找不到任何实现。看到几个联邦图的例子,但网关在本机节点上。
检查了 Apollo 和 netflix DGS 。
node.js - Apollo 在节点上运行不返回任何内容
您好,我很想返回一个服务:列表为此我有以下代码:
这里的问题是 a 或 b 必须是最新的,a 是一个承诺,当在 b 上解决时,这是未定义的,当然,apollo 在标准输出中打印服务列表,但我无法在节点中访问它,那么我怎样才能得到那个列表呢?
谢谢
apollo-server - 使用 Apollo Federation 配置对其他服务的子服务数据访问
我们使用 Apollo Federation 作为我们的主要 api 已经有 1.5 年了。联邦网关后面是 6 个子 graphql 服务,它们都在网关处组合。当您拥有跨越不同服务的数据结果集时,此配置确实非常有效。例如,引用购买的用户和与之关联的事件的门票列表等。
我们经历过这种崩溃的一个地方是,当需要一组预先设置的数据时,这些数据已经在另一个子服务(或跨其他子服务)(解析器/路径)中定义。没有办法(我们已经发现)从子服务查询联合以获取一组联合数据,供解析器使用以处理该数据。
例如,假设我们定义了一个 graphql 查询,它查询一个活动的所有门票,并通过联合返回购买者的数据、活动的数据和产品的数据。如果我需要来自解析器的数据集,我需要自己再次进行所有这些查询,复制 dataSource 逻辑并匹配代码中的数据。
一个疯狂的想法是设置apollo-datasource-rest
dataSource 来对我们的网关端点进行查询,作为解析器的数据源。通过这种方式,我们可以请求我们需要的数据,并让 Apollo Federation 按照设计的方式将所有数据拼接在一起。因此,与其解析器查询数据库中所有不同的数据然后匹配它们,我们将从我们的 graphql 网关请求数据,该网关已经定义了该查询。
我们试图通过这样做来避免在子服务中重复一组查询,以获取其他服务中(或跨)已经可用的详细信息。
问题
这真的是个坏主意吗?
这是一个合理的想法吗?
有没有人尝试过这样的事情?
是的,我们必须确保解析器没有循环依赖。在我们的例子中,我看到用于收集突变中的初始数据的“数据源访问网关”。
联合查询示例。在此查询中,event
、allocatedTo
、purchasedBy
和product
都是其他服务中的类型。event
是事件类型,allocatedTo
是purchasedBy
配置文件类型,product
是产品类型。这个查询为我提供了我会说的所有数据,向结果集中的人发送电子邮件通知。尽管从突变的解析器获取这些数据以将这些电子邮件排队意味着我需要自己进行许多查询并通过代码对齐所有数据,而不是使用已经使用已经建立的查询执行此操作的网关/联合。使用查询我们自己的网关的想法apollo-datasource-rest
是以这种形式获取这些数据。不是通过单独的查询和代码来对齐 id 等。
node.js - 连接 ECONNREFUSED,阿波罗联盟
我决定通过他们网站上的例子来研究阿波罗联盟。我试图在联合下合并三个服务,但我发现了这个错误:
检查服务定义更改时出错:无法在 http://localhost:4001 加载“帐户”的服务定义:对 http://localhost:4001/ 的请求失败,原因:连接 ECONNREFUSED 127.0.0.1:4001 此数据图缺少有效的配置。无法在 http://localhost:4001 加载“帐户”的服务定义:对 http://localhost:4001/ 的请求失败,原因:连接 ECONNREFUSED 127.0.0.1:4001
服务代码和阿波罗网关:
帐户
产品
评论
阿波罗网关
graphql - 为 GraphQL Federation 模块化类型定义和解析器
再会!
我们目前正在尝试实现 Apollo Federation,基本示例正在按照此处描述的方式工作。
现在我们想要模块化类型定义和解析器,因为我们觉得如果我们继续向其中添加类型定义和解析器方法,文件会太大。因此,我们为类型定义和解析器创建了单独的文件,并使用 GraphQL 工具来合并类型定义和解析器,如此处所述。特别是在“合并类型定义”和“合并解析器”部分下。
问题是在buildFederatedSchema
方法的解析器中提供合并的类型定义时,会发生错误。
所以我们有几个问题:
- 我们可以模块化 typedef 和解析器吗?
- 如果是,我们是否走在正确的轨道上?
- 如果我们不在正确的轨道上,请您指导我们采取正确的方法。
提前致谢!
graphql - 有没有办法在 Apollo Gateway 和联合服务之间添加缓存?
我正在使用 Apollo Federation,我有一个关于缓存的问题。
现在我有一个这样的查询,我想在哪里找到帖子的作者:
Post 是一项服务,Author 是另一项服务。“id”包含在 post 模型中,因为在使用客户端 apollo 库时这是预期的。
当该查询运行时,内部会发出两个请求:每个服务一个。
现在,生成的对 post 服务的请求(由网关)非常简单,如下所示:
我每分钟都会得到数千个,并想缓存它们。显然,通过 ID 获取帖子的 ID 永远不会改变,所以每次这样的请求都是浪费。
有没有办法在网关端缓存这个请求?这样它就不会向邮政服务发出请求。
graphql - Netflix 网关实施
所以我正在阅读一篇关于 Netflix 如何使用 graphql federation 扩展其 API 的文章。在本文的第二部分,我注意到 Netflix 开发了一个基于 apollo federation 规范的特殊网关。
https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-2-bbe71aaec44a
我搜索了整个互联网,但找不到实现。我想知道他们是否公开了实现,如果他们公开了,我在哪里可以找到它?
graphql - 我可以有一个联合图,其中接口的实现在 2 个单独的服务中
嗨,快速的 graphQL 联合问题。我有一个在服务 A 中实现的 A 类型。我在服务 B 中添加了 SomeInterface 类型的字段 interfaceFields。在服务 BI 中有一个 SomeInterface 的实现。所以我的问题是我可以使用 SomeInterface 的另一个实现创建另一个服务,所以如果我运行这个查询
它将从服务 b 获得 SomeInterfaceImpl1,从服务 c 获得 someInterfaceImpl2。现在我有这个
服务A
服务乙
服务 C
我收到这个错误
GraphQLError:UnknownType 类型的验证错误:未知类型 SomeInterfaceImpl2 @'_entities/interfaceFields
我只是不知道要为服务 C 做什么,或者即使这是可能的。无论如何,任何帮助将不胜感激