问题标签 [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.

0 投票
0 回答
366 浏览

express - 使用 Apollo 联邦实现的 Apollo-server-express

有没有人成功地实现了 apollo express 服务器(作为网关)和 graphQL 服务器的联合?

我的身份验证方式是通过网关上的 REST 端点提供的,因此我将 apollo-express 服务器作为顶层运行,但是当尝试查询数据时,它不会从其他服务返回任何内容。当我切换到让网关作为纯粹的 Apollo 服务器运行时,它会运行并可以从属于连接到它的 apollo 联邦的服务中获取数据。但这意味着我必须忽略我在服务中使用的身份验证和其他 REST 端点的实现。

当前设置:

0 投票
1 回答
1306 浏览

java - GraphQL Apollo Federation-JVM 中 @extends 类型的解析器问题

我对 Apollo Federation 和 Gateway 很陌生,并尝试将apollo federation-jvm用于演示项目。我使用联合 jvm 创建了两个联合服务。这两项服务都通过 Apollo Gateway 相互连接。使用他们官方 github 页面中的这个节点网关示例。

以下是这些服务的架构和解析器:

联合服务 1:

视频.graphql

video.graphql 的解析器

联合服务2:

名称.graphql

name.graphql 的解析器

我可以通过网关在两种服务的类型查询中调用所有 API(topVideo、allVideos、getByNameId、getAllNames),没有任何问题。

但是,当我通过将以下内容添加到 video.graphql 架构来扩展视频类型架构中的名称类型时

我不确定如何为getVideoByNameId字段编写解析器。

我尝试将方法 getVideoByNameId(String nameId)添加到 VideoQuery.java (从 getVideoByNameId 方法返回硬编码视频对象),但图表始终返回 null。

我还尝试使用下面的代码创建 RuntimeWiring,然后在创建 GraphQLSchema 对象时传递它,如他们github 页面上的示例所示

似乎没有任何效果。非常感谢任何帮助。

0 投票
1 回答
221 浏览

graphql - 如何联合两个提供相同类型的 apollo 服务

我是 apollo 的新手,我有两个 apollo 服务,我想通过使用 apollo 联合来联合:

产品服务:

员工服务:

如何在两个对象的响应对象中使用类型Seo ?是创建接口 Seo 并实现 StaffMemberSeo 和 ProductSeo 的正确程序,还是有一个注释允许我在两个服务中定义完全相同的类型?

0 投票
0 回答
969 浏览

graphql-java - 将我的 spring Boot Graphql 连接到 Apollo Gateway

我正在尝试使用 Spring Boot 开发将公开 GraphQL 的微服务,并将它们全部连接到 Apollo Gateway,但出现以下错误:

UnhandledPromiseRejectionWarning:错误:Apollo 服务器需要现有的模式、模块或 typeDefs

这是我附上的代码

客户端解析器

客户端架构

网关.js

错误信息

在 Java 控制台中我有这个消息

有什么想法吗?

0 投票
1 回答
1302 浏览

node.js - 使用 Express 框架实现 Apollo Federation 网关

我目前正在开发一个 POC,以在 NodeJS + express 应用程序中实现 Apollo Federation 网关。到目前为止,我还没有真正遇到任何关于如何正确执行此操作的示例。到目前为止,我遇到了 ApolloServer 模块无法识别ApolloGatewayfrom实例的问题@apollo/gateway。我使用 ApolloServer 实例作为网关实例的包装器,如教程所示:https ://www.apollographql.com/docs/apollo-server/federation/implementing/#defining-the-gateway 。server.applyMiddleWare()但是,在我的快递应用程序中调用时遇到了问题。我从https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-express#express遇到了这个例子

具体来说,这里是错误日志的片段:

以下是我尝试将 ApolloServer 集成到我的 express 应用程序的方式:

非常感谢您的帮助!

0 投票
1 回答
112 浏览

graphql - 除了 Apollo,还有其他 GraphQL Federation 实现吗?

我一直在尝试在现有的 graphql 服务之上构建一个联邦网关,并且很好奇除了阿波罗联邦之外是否还有其他相同的实现?

我试图找到但找不到任何东西。我也在寻找联合网关的订阅。有人知道同样的其他实现吗?

0 投票
1 回答
1368 浏览

docker - apollo 网关(联邦)无法连接到 kubernetes 环境中的服务

我有使用 graphql 的经验,但这是我第一次尝试 apollo federation 和 kubernetes。

我首先尝试使用 apollo federation 将我的单体 graphql 服务器拆分为微服务。它工作得很好(下面是工作代码)。现在我正在尝试在 kubernetes 集群中运行这些微服务,但在 apollo 网关和其他后端服务之间一直存在网络问题。

从 apollo 网关服务器(当我尝试在 kubernetes 上运行它时),我收到此错误:

Encountered error when loading auth at auth-cluster-ip-service: Only absolute URLs are supported

这是将 I 服务添加到 apollo 网关的部分:

首先我尝试了以下环境变量

我只是在笔记本电脑上的 localhost 上运行了 4 个节点应用程序,它就可以工作了!

现在是 Kubernetes 部分。

下面是 apollo-gateway 的部署配置文件。我怀疑问题出在环境变量中。如您所见,url我使用的service name是相应环境变量的值,而不是 。但据我所知,kubernetes master 会获取这个“url”(clusterIP 名称)并替换为相应 pod 的 IP 地址。所以应该没问题。

当我练习 kubernetes 时效果很好。在我的实践中,我通过 clusterIP 名称连接到 redis 和 postgres pod。

阿波罗网关部署配置文件

示例 SERVICE cluster-ip 配置文件

示例 SERVICE 部署配置文件

0 投票
1 回答
220 浏览

graphql - 如何将 GraphqlSchema 转换为联合模式?

当我将现有的 GrpahqlSchema 传递给时buildFederatedSchema,我遇到了错误

这是因为当我将 GrpahqlSchema 传递给 buildFederatedSchema 时,它的验证失败。

在这个https://github.com/apollographql/apollo-server/pull/3013上有一个公开的 PR 。有没有其他选择?

0 投票
1 回答
130 浏览

graphql - 小型项目的阿波罗联盟

我是 graphQL、Apollo 等的新手。很快我将开发一个具有 3 个(rest-api)数据源和只有 1 个消费者来创建(主要)用户类型的低成本应用程序。计划使用无服务器功能作为托管。我一直在阅读有关模式拼接、联邦和模块的内容,但找不到一个很好的答案来解释为什么我应该在这个小项目中使用 Apollo 联邦。据我了解,您需要多个阿波罗服务器,并且与单片阿波罗服务器相比,部署/无服务器成本会更高。

一个简化的例子:

服务器 1:

服务器 2:

服务器 3:

您是否会建议我仍然使用 Apollo 联邦或已弃用的模式拼接。graphql-modules 可以是一个好的解决方案还是另一个插件?

0 投票
0 回答
335 浏览

node.js - Graphql 节点获取文件上传

我目前正在尝试实现 Apollo 联合服务器。但是我面临的问题是阿波罗联邦不会将文件传递给联邦服务中的解析器。

所以在网关中我需要将文件发布到我的休息端点,见下文

当我使用这种方法时。该文件在我的休息端点上是空的,它是用流明编写的。任何建议都会有很大帮助!