首页 > web前端 > css教程 > 跨多个数据源实现单个GraphQl

跨多个数据源实现单个GraphQl

Joseph Gordon-Levitt
发布: 2025-03-20 09:43:13
原创
686 人浏览过

跨多个数据源实现单个GraphQl

本文展示了跨多个动物群实例缝制的架构,从而从不同的数据源创建了统一的GraphQl API。我们还将探索将动物区系与其他GraphQL服务相结合。

了解模式缝线

架构缝线是一种从多个基础GraphQl API构建单个GraphQl API的技术。

为什么要使用模式缝线?

大规模应用通常采用微服务用于模块化。但是,客户端应用程序经常需要来自多个来源的数据。统一的GraphQl API提供了一个干净的接口,但是构建单片服务器可能会出现问题。 Fauna的每个数据库的本机GraphQl是理想的,但是多个数据库需要连接到多个实例,从而创建紧密的耦合。模式缝合通过将多个GraphQl服务组合到单个统一的模式中来解决此问题。本文涵盖:

  1. 将多个FAUNA实例集成到单个GraphQl服务中。
  2. 将动物群与其他GraphQL API和数据源相结合。
  3. 使用AWS lambda创建无服务器GraphQL网关。

合并多个动物群实例

让我们将多个FAUNA数据库实例(例如, ProductInventoryReview )组合到单个GraphQL服务中。每个数据库都有自己的GraphQl API(子图)。我们的目标是用于客户端应用程序的统一图,以查询所有来源的数据。

该统一的图将是我们的网关服务。我们将使用node.js构建它。

  1. 项目设置:创建一个node.js项目:

     mkdir my-gateway
    CD My-Gateway
    NPM Init-是的
    登录后复制
  2. 安装依赖项:

     npm i express-express-graphql graphql @graphql-tools/schema @graphql-tools/stitch @graphql-tools/wrap cross-fetch-save -save-save-save-save
    登录后复制
  3. 基本GraphQl Server(gateway.js):从简单的Express GraphQl Server开始:

     // Gateway.js(初始版本)
    // ...(Express Server设置)...
    登录后复制

    (此初始代码将是类似于原始示例的裸孔服务器,但省略了简洁的专注于缝合方面。)

  4. FAUNA数据库设置:创建三个FAUNA数据库( ProductInventoryReview )并生成管理密钥。为每个数据库定义GraphQL模式(如原始示例所示)。

  5. Gateway Service Enhancement(Gateway.js):使用@graphql-tools/stitch实现模式缝制。本节将包括原始描述的makeRemoteExecutormakeGatewaySchema功能,但具有改善的清晰度,并有可能重构以更好地可读性。主要改进将是:

    • 清晰的评论解释了每个功能的目的。
    • API呼叫的错误处理。
    • 通过环境变量而不是硬编码的API键配置。
  6. 缝制第三方API:将网关扩展到使用相同的makeRemoteExecutorstitchSchemas方法包括第三方GraphQl API(例如SpaceX API)。

  7. 部署到AWS lambda:使用无服务器框架将网关部署到AWS lambda功能。安装必要的依赖项( serverlessserverless-httpbody-parser )。创建一个serverless.yaml文件(如原始文件所示)。修改gateway.js ,与serverless-http集成以进行适当的lambda功能处理。使用serverless deploy部署。

结论

模式缝合为从多个数据源构建可扩展和可维护的GraphQL API提供了强大的解决方案。尽管本文使用Fauna和AWS Lambda,但这些原则广泛应用于其他GraphQL服务和无服务器平台。阿波罗联合会(Apollo Federation)等替代方法提供了类似的功能。

以上是跨多个数据源实现单个GraphQl的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板