问题标签 [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 投票
1 回答
135 浏览

apollo-server - 直接从网关调用实现服务

我正在使用 Apollo Federation,我想在网关中实现一些自定义身份验证行为,例如直接从网关调用实现服务以获取用户数据,然后我可以将其添加为要转发的标头到请求的实施服务。做这样的事情可能吗?这种模式常见还是不推荐?

0 投票
0 回答
229 浏览

graphql - Apollo Federation:如何通过解析器跨联合服务访问 Input Request 中的数据

寻找使用 Apollo federation 加入 graphQL API 响应的选项,其中 Graphql API 构建在 POST 服务之上。

为了解释我的用例,我创建了下面的虚拟示例。

两个 POST 服务是

  1. 用户服务和
  2. 邮政服务

请求用户服务

来自用户服务的响应

要求邮政服务

Post Service 需要来自 UserService Response 的 PostIds 以及来自 Gateway Input(来自客户端的输入)的 memberInfo 和 GroupInfo。

在我当前的解析器中,除了 postId,我没有任何信息,

如何编写解析器,其中两个响应需要使用 postId 连接但需要来自客户端输入的额外信息?

或者换句话说 - 如何通过解析器跨联合服务访问来自 Input Request 的数据


添加以回答评论中的问题之一

---------------------------------------- 用户架构 -------------------- --------

// 这里Id(postId)应该是主键,但是服务也需要其他输入,包括MemberInfo和GroupInfo。我不知道该怎么做,这是我需要帮助以及解析器的地方

-----------------------------后架构 -------------------- ------

0 投票
1 回答
382 浏览

apollo-server - 如何使用 Apollo Gateway 实现异步突变

使用 Apollo Gateway 时,Gateway 会将突变直接转发到相关的实现服务。此类请求是同步的。

有没有一种方法可以让 Apollo Gateway 将所有突变发布到像 rabbitmq 这样的消息代理,以便我们可以在网关和实现服务之间实现异步通信?

0 投票
1 回答
1644 浏览

node.js - 键入'IResolvers' 不可分配给类型 'GraphQLResolverMap'。索引签名不兼容

我遵循Apollo Federation的指南:实施服务

代码在这里:

TSC 抛出类型错误:

类型 'IResolvers<any, any>' 不可分配给类型 'GraphQLResolverMap'。索引签名不兼容。键入'(() => 任何) | GraphQLScalarType | IEnumResolver | IResolverObject<任何,任何,任何> | IResolverOptions<any, any, any>' 不可分配给类型 'GraphQLScalarType | { [枚举值:字符串]:字符串 | 数字; } | { [fieldName: string]: GraphQLFieldResolver<any, any, { [argName: string]: any; }> | { 需要?:字符串 | 不明确的; 解决:GraphQLFieldResolver<...>; }; }'。类型 '() => any' 不可分配给类型 'GraphQLScalarType | { [枚举值:字符串]:字符串 | 数字; } | { [fieldName: string]: GraphQLFieldResolver<any, any, { [argName: string]: any; }> | { 需要?:字符串 | 不明确的; 解决:GraphQLFieldResolver<...>; }; }'。类型 ' () => any' 不能分配给类型 '{ [fieldName: string]: GraphQLFieldResolver<any, any, { [argName: string]: any; }> | { 需要?:字符串 | 不明确的; 解析:GraphQLFieldResolver<any, any, { [argName: string]: any; }>; }; }'。'() => any'.ts(2322) 类型中缺少索引签名

软件包版本:

好像IResolvers接口不兼容,但是GraphQLResolverMap接口没有暴露,所以我无法导入和使用。我不想将解析器的类型强制转换为any类型。这是一个错误吗?

更新

apollo-server更新后问题依旧"apollo-server": "^2.15.1",

0 投票
0 回答
215 浏览

javascript - 如何记录使用 Apollo Federation 和 Apollo Gateway 构建的 API 网关?

使用 apollo graphql 进行日志记录看起来很困难。我们如何才能更深入地了解联邦网关中发生的活动。我尝试了摩根,但这对于基于 REST 的观点来说很好。使用 graphql 透视图如何执行日志记录。

我看到一个名为apollo-log的包,它只适用于非联合方式,它会污染日志。记录联合 graphql 服务器的理想方式是什么

0 投票
2 回答
1356 浏览

graphql - TypeGraphql 与 Apollo 联合是否可行?

我们计划迁移到 Apollo GraphQL,因为 Apollo 联合功能允许在单个 GraphQL API 后面统一多个微服务。但是我们目前正在使用 TypeGraphQL,我认为它们是不兼容的。原因是在阿波罗联盟我看到你使用特殊的@key 属性

但是,TypeGraphql 的模式是从类自动生成的。有没有办法仍然使用这两种技术,或者它们是互斥的?

0 投票
1 回答
179 浏览

graphql - GraphQL,Apollo 服务器联合模式

查询时出现此错误:

这是查询:

此查询的架构是:

另一个模式具有Transaction类型:

有什么问题?

编辑:如果我查询:

工作正常,我得到了所有id的查询,但如果我包含另一个属性,查询会失败。

0 投票
0 回答
98 浏览

graphql - 阿波罗联盟模式,表示不完整

我有这个查询:

我得到了这个错误:

为什么variables.representations缺少createdAt值?当我直接对 DynamoDB 进行查询时,我可以看到createdAt所有这两项的值。

我的模式是这样的:

另一个模式具有事务类型:

0 投票
1 回答
184 浏览

apollo-federation - 当实体是另一个实体的本机时,为什么我会在一个服务中看到 _entities 请求?

我正在努力实现与 Apollo GraphQL 联邦兼容的服务;我提供的服务是用 Lacinia(Clojure 的 GraphQL 库)编写的。

我有一项定义用户的服务:

还有一个定义产品和扩展用户的第二个:

当我执行跨越服务的查询时:

我失败了;以下请求被发送到products服务:

这失败了,因为据我所知,产品服务不应该提供等效于__resolveReferencefor 类型User(它扩展了);只需键入Product.

这在文档中非常不清楚,我将尝试在 Product 中为用户的存根提供一种存根引用解析器。

0 投票
1 回答
506 浏览

node.js - 节点 8.11.1 上的阿波罗联盟订阅

我是阿波罗联盟的新手。我尝试将我在远程服务器上(在写在 aiohttp 上的其他主机上)上的订阅包含到联合模式中。当我启动我的节点 index.js 时没有问题,但文档中没有订阅,如果我在 altair 中尝试相同的结果。请考虑到订阅本身是完全可行的,因为我可以通过 Swart Web Socket 客户端访问它,它会收到我的计数。我缺少什么以及如何修复它。先感谢您。

这是我的订阅(由 aiohttp 在 python 上编写):

这是我的 index.js