将GraphQL迁移到 Hasura 数据交付网络
在此页面上
重要
请务必参阅MongoDB Atlas和 Hasura 的官方文档 以获取最新、最准确的信息。具体步骤可能会有所不同,具体取决于项目的详细信息和所使用的技术。
Hasura 使开发者能够在 MongoDB 上快速构建和部署GraphQL和 MongoDB API 和许多其他 数据源 。通过大幅缩短API开发时间,Hasura 能够快速访问权限数据,减少团队和服务之间的摩擦,并使企业能够缩短数据驱动的产品和功能的上市时间。
开始之前
如果还没有,请在 Hasura 网站 cloud.hasura.io 上创建一个帐户。
迁移到 Hasura
将GraphQL API端点从MongoDB Atlas App Services迁移到 Hasura 是一个多步骤进程,其中包括在 Hasura 中设置环境、配置数据库连接、迁移模式以及实施授权和身份验证机制。 以下是详细说明每个步骤的扩展指南,重点介绍了 Hasura 中的授权和基于角色的访问权限控制 (RBAC)。 有关更多信息,请查看 HasuraDocs 。
要迁移到 Hasura,请执行以下操作:
为 MongoDB 授权 Hasura
Hasura 可以连接到新的或现有的 MongoDB Atlas 数据库,并为您生成 GraphQL API。
Go cloud.mongodb.com
并导航到Atlas仪表盘上的“网络访问”页面。
单击 ADD IP ADDRESS按钮并输入0.0.0.0/0
。 将此条目描述为 Hasura。 如需唯一IP解决,请联系 Hasura 销售人员 关于在私有 DDN 上部署。
现在,Hasura Cloud 可以与 MongoDB Atlas 实例通信。
在 Database 页面上,找到连接到 的Atlas 集群,然后单击App Services App Connect。选择 Drivers(驱动程序)选项并复制连接string 。
创建新项目并连接到 Hasura
HasuraDocs 包含执行以下步骤的详细信息:
安装CLI (先决条件)
使用CLI登录
初始化新的 超级图 在空目录中
连接到数据
自省数据源
构建本地超级图
启动您的超级图
创建 Hasura云项目
构建和部署您的超级图
测试 GraphQL 查询
您可以使用 Hasura Console 上的API Explorer 页面来测试一些GraphQL查询。
Hasura 还使用 GraphiQL 接口,这类似于在 Atlas App Services 中测试查询的方式。
授权和身份验证
Hasura 不直接处理身份验证。 相反,它依赖于外部身份验证服务提供的会话变量。 这些会话变量包括对于确定数据访问权限至关重要的用户、角色和组织信息。 有关详细信息,请参阅 Hasura 身份验证Docs
数据访问权限(包括角色和规则表达式)可以转换为 Hasura 基于角色的权限规则。
Atlas提供的所有身份验证方法都与 Hasura 的 Webhook 和 JSON web token 身份验证方法兼容。 如果您使用电子邮件/密码、匿名或 API 密钥身份验证,请使用 Hasura Webhook。 如果您使用的是自定义 JSON Web 令牌,请直接与 Hasura 的 JSON Web 令牌身份验证方法集成。
Hasura 建议使用外部 IdP 来管理身份验证流程,以提高安全性和灵活性。 您可以将 Hasura 与您选择的任何身份验证提供程序(例如 Auth0、Firebase Auth、 Amazon Web Services Cognito 甚至自定义解决方案)集成,以验证用户并设置必要的会话变量。 有关在 Hasura 中配置 JSON Web 令牌或 Webhook 身份验证的信息,请参阅以下位置的文档:
设置自定义解析程序或业务逻辑
如果您现有的GraphQL API端点包含自定义解析程序或业务逻辑,则需要在 Hasura 中实现这些内容。 Hasura 支持:
更新客户端应用程序
更新与GraphQL API端点交互的任何客户端应用程序,使其点新的 Hasura 端点 URL。 任何现有的 Apollo客户端都可以与 Hasura 一起使用。 重构应用程序的GraphQL查询和更改,使其与 Hasura 语法和模式保持一致,从而确保与新的GraphQL API结构兼容。
关闭 MongoDB Atlas App Services 端点
验证 GraphQL API 端点已完全迁移并在 Hasura 上运行后,您可以删除 MongoDB Atlas App Services 应用程序,以避免不必要的费用。 谨此提醒,从 3 月开始,Atlas GraphQL 端点将不再受支持。 12 , 2025 。