问题标签 [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.
apollo-server - 直接从网关调用实现服务
我正在使用 Apollo Federation,我想在网关中实现一些自定义身份验证行为,例如直接从网关调用实现服务以获取用户数据,然后我可以将其添加为要转发的标头到请求的实施服务。做这样的事情可能吗?这种模式常见还是不推荐?
graphql - Apollo Federation:如何通过解析器跨联合服务访问 Input Request 中的数据
寻找使用 Apollo federation 加入 graphQL API 响应的选项,其中 Graphql API 构建在 POST 服务之上。
为了解释我的用例,我创建了下面的虚拟示例。
两个 POST 服务是
- 用户服务和
- 邮政服务
请求用户服务
来自用户服务的响应
要求邮政服务
Post Service 需要来自 UserService Response 的 PostIds 以及来自 Gateway Input(来自客户端的输入)的 memberInfo 和 GroupInfo。
在我当前的解析器中,除了 postId,我没有任何信息,
如何编写解析器,其中两个响应需要使用 postId 连接但需要来自客户端输入的额外信息?
或者换句话说 - 如何通过解析器跨联合服务访问来自 Input Request 的数据
添加以回答评论中的问题之一
---------------------------------------- 用户架构 -------------------- --------
// 这里Id(postId)应该是主键,但是服务也需要其他输入,包括MemberInfo和GroupInfo。我不知道该怎么做,这是我需要帮助以及解析器的地方
-----------------------------后架构 -------------------- ------
apollo-server - 如何使用 Apollo Gateway 实现异步突变
使用 Apollo Gateway 时,Gateway 会将突变直接转发到相关的实现服务。此类请求是同步的。
有没有一种方法可以让 Apollo Gateway 将所有突变发布到像 rabbitmq 这样的消息代理,以便我们可以在网关和实现服务之间实现异步通信?
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",
javascript - 如何记录使用 Apollo Federation 和 Apollo Gateway 构建的 API 网关?
使用 apollo graphql 进行日志记录看起来很困难。我们如何才能更深入地了解联邦网关中发生的活动。我尝试了摩根,但这对于基于 REST 的观点来说很好。使用 graphql 透视图如何执行日志记录。
我看到一个名为apollo-log的包,它只适用于非联合方式,它会污染日志。记录联合 graphql 服务器的理想方式是什么
graphql - TypeGraphql 与 Apollo 联合是否可行?
我们计划迁移到 Apollo GraphQL,因为 Apollo 联合功能允许在单个 GraphQL API 后面统一多个微服务。但是我们目前正在使用 TypeGraphQL,我认为它们是不兼容的。原因是在阿波罗联盟我看到你使用特殊的@key 属性
但是,TypeGraphql 的模式是从类自动生成的。有没有办法仍然使用这两种技术,或者它们是互斥的?
graphql - GraphQL,Apollo 服务器联合模式
查询时出现此错误:
这是查询:
此查询的架构是:
另一个模式具有Transaction
类型:
有什么问题?
编辑:如果我查询:
工作正常,我得到了所有id
的查询,但如果我包含另一个属性,查询会失败。
graphql - 阿波罗联盟模式,表示不完整
我有这个查询:
我得到了这个错误:
为什么variables.representations
缺少createdAt
值?当我直接对 DynamoDB 进行查询时,我可以看到createdAt
所有这两项的值。
我的模式是这样的:
另一个模式具有事务类型:
apollo-federation - 当实体是另一个实体的本机时,为什么我会在一个服务中看到 _entities 请求?
我正在努力实现与 Apollo GraphQL 联邦兼容的服务;我提供的服务是用 Lacinia(Clojure 的 GraphQL 库)编写的。
我有一项定义用户的服务:
还有一个定义产品和扩展用户的第二个:
当我执行跨越服务的查询时:
我失败了;以下请求被发送到products
服务:
这失败了,因为据我所知,产品服务不应该提供等效于__resolveReference
for 类型User
(它扩展了);只需键入Product
.
这在文档中非常不清楚,我将尝试在 Product 中为用户的存根提供一种存根引用解析器。
node.js - 节点 8.11.1 上的阿波罗联盟订阅
我是阿波罗联盟的新手。我尝试将我在远程服务器上(在写在 aiohttp 上的其他主机上)上的订阅包含到联合模式中。当我启动我的节点 index.js 时没有问题,但文档中没有订阅,如果我在 altair 中尝试相同的结果。请考虑到订阅本身是完全可行的,因为我可以通过 Swart Web Socket 客户端访问它,它会收到我的计数。我缺少什么以及如何修复它。先感谢您。
这是我的订阅(由 aiohttp 在 python 上编写):
这是我的 index.js