问题标签 [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 联合网关背后的 Hasura GraphQL 端点
有没有人成功地将 Hasura GraphQL 端点放置在 Apollo 联合网关后面?我知道 Hasura 想要充当联邦点,但我宁愿不这样做......目前的想法是创建一个带有远程模式的 apollo 服务器来连接 Hasura,然后在网关后面......寻找任何关于这是否可能的想法或指导?
我想说这不是因为我看不到任何尝试过的人。我不确定 Hasura 端点是否允许。“本身”以这种方式联合起来。
我已经开始了这个过程,但最初无法获得一个带有远程方案的 Express Apollo 服务器来连接到 Hasura 端点,所以一个较小的问题是这是否可能。
干杯。
graphql - GraphQL - “Federations”是普通 Graphql 的事情还是 Apollo 的事情?
我很难区分什么是香草 GraphQL 和什么是Apollo。
我试图理解模式拼接,并看到使用Fragments和Federation是两种不同的方法来做到这一点。
发现这很有启发性 https://www.apollographql.com/docs/graphql-tools/schema-stitching/
我必须购买Apollo才能使用Federations吗?
javascript - 如何使用托管联合设置 Apollo 网关?
在阅读了有关托管联合的 Apollo 文档后,我完全按照文章中的描述配置了我的 Apollo 网关。基本上我没有将任何东西传递给ApolloGateway
构造函数。它ENGINE_API_KEY
在我的 .env 文件中提供,应该由 ApolloGateway 实例获取。
这个第一个警告是什么意思?如果没有可用的架构更新,该消息是否正常和预期?
为什么即使在 apollo-server sais Gateway 成功加载架构之后,GraphQL 架构仍未定义。?
我知道在传递给另一个函数或构造函数之前未解决承诺的其他情况下会出现这种冲突的输出。在将所有服务传递给 ApolloServer 之前,我是否必须以某种方式等待 ApolloGateway 获取所有服务?我应该如何最好地做到这一点?
apollo-server - 如何将 Apollo 联合模式中的扩展类型写入其数据库?
如何在联合模式中处理突变?如果我有帐户服务和课程服务,课程服务可能会将用户类型扩展一些字段。使用该函数如何为查询解析这些字段的方式有__resolveReference()
据可查,但是,如果涉及突变,我真的找不到任何东西。在不知道用户拥有的所有字段的情况下,我应该如何处理从帐户服务到其数据库的写入?我想象一个看起来像这样的突变:
现在哪个服务负责将course
字段写入用户数据库?课程微服务也有自己的数据库,不应该向用户数据库写入任何内容。
这仍然是 Apollo 模式联合未解决的问题吗?
graphql - 使用 Apollo 联邦处理私有突变
在微服务架构中,我确实有被认为是由最终用户使用的 GraphQL 突变,还有一些只是内部的。
我打算搬到阿波罗联邦。是否有一种内置方法可以将突变声明为意外,以便最终用户无法访问但可以由内部服务直接调用?
我不确定最好的设计是什么;我不希望最终陷入必须为微服务运行两台不同服务器的情况:一个公共服务器和一个私有服务器。
mocking - 是否可以在网关级别模拟 GraphQL 服务?
想象一下下面的 Node(简化)模块。它使用底层 Apollo 联合网关定义了一个 Hapi 服务器。服务器有一个/graphql
能够接受 GraphQL 请求并聚合来自多个联合 GraphQL 服务器的数据的路由。
我想模拟 GraphQL 响应以进行测试。我的猜测是,根据我从文档中得到的信息,不能在这个级别使用普通的 Apollo 或 GraphQL 模拟策略,主要是因为我读到的模拟策略依赖于手头的模式(使用graphql-tools
mockServer
, for例子)。
我的假设是否正确,我是否需要在服务器级别模拟单个服务?这是否意味着可以认为没有必要使用模拟服务测试 Apollo 网关?
graphql - 如何创建托管的 Apollo 联合网关?
我要疯了,因为它听起来很简单。
我从这个项目开始:https ://github.com/apollographql/federation-demo 然后我在https://engine.apollographql.com上 创建了一个帐户,在那里我注册了不同的联合服务。我也有一个用于网关的 ENGINE_API_KEY。
太棒了,我可以看到引擎中注册的流量!
下一步显然是从 ApolloGateway 构造函数的配置对象中删除“serviceList”。当网关启动时,它会给出以下消息:
When `serviceList` is not set, an Apollo Engine configuration must be provided.
我该怎么办?什么是“Apollo 引擎配置”,我该如何提供?
graphql - apollo service:push 返回错误:未知类型:“用户”,但在本地运行良好。如何解开这个谜团?
原始代码来自这里:https ://github.com/apollographql/federation-demo/blob/master/services/reviews/index.js
我的代码是这样的:
我有其他非常相似的服务,它们可以毫无问题地解析类型。
我做了什么值得这个错误?
graphql - Apollo Federation:Federation 是否取代了 delegateToSchema?
简短版:我可以使用 Apollo Federation 来替换 的功能delegateToSchema
,如果可以,如何?这个想法是重用来自另一个黑盒服务的解析器逻辑。
长版:
我已经在互联网上搜索了几个小时,试图弄清楚如何在不明确编写新解析器的情况下合并两个服务。Apollo 含糊地说你可以从模式拼接迁移到联邦,但是考虑这个例子:
我正在使用 PostGraphile 将我的数据库转换为 GraphQL 模式,其中包含所有必要的 CRUD 解析器。已经有一个查询,我可以使用它获取特定用户的照片:
这存在于我将其视为黑匣子的另一项服务中。手动编写一个新的解析器并不理想(或容易),特别是因为数据在那里,我只需要告诉 Apollo 如何获取它。我想也许我可以使用delegateToSchema
:
但从我在文档和文章中看到的情况来看,这是模式拼接,应该被联邦取代。理想情况下,如果可能的话,我只想使用联合来实现这一点。可能吗?文档没有说清楚,我看到的每个联邦示例仍然需要您编写自定义解析器。就好像指令只是给出提示以确保您在解析器中具有正确的字段,而不是实际执行任何逻辑。
任何帮助表示赞赏!