Hasura

From binaryoption
Jump to navigation Jump to search
Баннер1
    1. Hasura:GraphQL API 的快速构建与部署指南 (针对初学者)

简介

Hasura 是一个开源的 GraphQL 引擎,它允许开发者快速构建和部署高性能的 GraphQL API,直接连接到 PostgreSQL、MySQL、SQL Server、Citrus Data 和其他 SQL 数据库。它极大地简化了 API 开发流程,无需编写大量的样板代码。对于那些熟悉 REST API 的开发者来说,Hasura 提供了一种更高效、更灵活的替代方案。 本文将深入探讨 Hasura 的核心概念、优势、安装、配置,以及一些实际应用场景,帮助初学者快速上手。

为什么选择 Hasura?

在深入了解 Hasura 之前,了解它解决哪些问题至关重要。传统的 API 开发,尤其是使用 REST,往往需要大量的重复性工作:

  • 构建端点:为每个资源创建独立的 API 端点。
  • 序列化/反序列化:在数据库数据和 API 响应之间进行转换。
  • 权限控制:实现细粒度的访问控制。
  • 文档维护:保持 API 文档与代码同步。

Hasura 自动处理了这些繁琐的任务,从而显著提高了开发效率。以下是 Hasura 的一些主要优势:

  • **即时 GraphQL API:** 基于现有的数据库模式,Hasura 能够立即生成一个完整的 GraphQL API,无需编写任何代码。
  • **实时订阅:** 支持 WebSocket 订阅,实现实时数据更新。这对于需要实时数据的应用程序,例如 金融交易平台,至关重要。
  • **细粒度的权限控制:** 提供基于角色的访问控制 (RBAC) 和基于规则的权限控制,确保数据的安全。
  • **高性能:** Hasura 引擎经过优化,可以处理高并发请求。
  • **可扩展性:** 可以轻松扩展以满足不断增长的需求。
  • **易于集成:** 可以与各种前端框架(例如 ReactAngularVue.js) 和后端服务集成。
  • **开源:** 拥有活跃的社区支持,并且完全开源,可以自由使用和修改。
  • **自动文档:** Hasura 提供一个内置的 GraphQL IDE,可以自动生成 API 文档。

Hasura 的核心概念

理解以下核心概念对于有效使用 Hasura 至关重要:

  • **连接 (Connections):** Hasura 连接到你的数据库,并从中读取元数据(表、视图、函数等)。
  • **跟踪 (Tracks):** 定义哪些表、视图或函数应该暴露在 GraphQL API 中。
  • **权限 (Permissions):** 控制哪些用户或角色可以访问哪些数据。Hasura 提供了行级安全和列级安全。
  • **角色 (Roles):** 定义用户身份和权限。
  • **事件 (Events):** 在数据库中发生特定事件时触发的 Webhooks。例如,当插入新记录时,可以触发一个 回测系统 的更新。
  • **远程模式 (Remote Schemas):** 允许你将其他 GraphQL API 集成到你的 Hasura GraphQL API 中,实现 API 组合。
  • **Actions:** 允许您在 GraphQL 层执行自定义逻辑,例如调用外部服务。这对于 技术指标计算 非常有用。
  • **Metadata:** 存储 Hasura 配置信息的底层数据存储。

安装与配置

Hasura 可以通过多种方式安装:

1. **Docker:** 推荐使用 Docker 安装,因为它简化了部署过程。

   ```bash
   docker run -d --name hasura -p 8080:8080 hasurahq/hasura
   ```

2. **Kubernetes:** 可以使用 Kubernetes 部署 Hasura。 3. **Cloud Providers:** 许多云提供商(例如 AWSGoogle CloudAzure) 提供了 Hasura 的托管服务。

安装完成后,可以通过浏览器访问 Hasura 控制台 (通常是 `http://localhost:8080`)。

    • 配置数据库连接:**

1. 在 Hasura 控制台中,点击 "Data" -> "Add Database"。 2. 选择你的数据库类型(例如 PostgreSQL)。 3. 填写数据库连接信息(例如主机名、端口、用户名、密码、数据库名称)。 4. 点击 "Test Connection" 确保连接成功。 5. 点击 "Add Database" 保存连接。

使用 Hasura 构建 API

连接到数据库后,Hasura 会自动扫描数据库模式并生成 GraphQL API。你可以通过 Hasura 控制台的 GraphQL IDE 探索 API。

    • 示例:**

假设你有一个名为 `products` 的表,包含以下列:`id`、`name`、`price`、`description`。

Hasura 会自动生成以下 GraphQL 查询:

  • **获取所有产品:**
   ```graphql
   query {
     products {
       id
       name
       price
       description
     }
   }
   ```
  • **按 ID 获取单个产品:**
   ```graphql
   query {
     product(id: 123) {
       id
       name
       price
       description
     }
   }
   ```
  • **插入新产品:**
   ```graphql
   mutation {
     insert_products(input: {name: "New Product", price: 99.99, description: "A great product"}) {
       returning {
         id
         name
         price
         description
       }
     }
   }
   ```

权限控制

Hasura 提供了强大的权限控制机制,可以确保数据的安全。你可以定义基于角色的访问控制 (RBAC) 和基于规则的权限控制。

    • 基于角色的访问控制 (RBAC):**

1. 在 Hasura 控制台中,点击 "Admin" -> "Roles"。 2. 创建新的角色(例如 "admin"、"user")。 3. 为每个角色分配权限(例如 "可以读取所有产品"、"可以创建产品")。

    • 基于规则的权限控制:**

你可以定义更细粒度的权限规则,例如:

  • 只允许用户读取他们自己的产品。
  • 只允许管理员删除产品。

这些规则可以使用 Hasura 的表达式语言定义。 例如,可以使用 `X-Hasura-User-Id` 请求头来识别用户,并根据用户 ID 过滤数据。这在 风险管理 中识别特定用户的交易记录时非常有用。

实时订阅

Hasura 支持 WebSocket 订阅,可以实现实时数据更新。你可以订阅特定表或视图的更改,并在数据发生更改时收到通知。

    • 示例:**

订阅 `products` 表的更改:

```graphql subscription {

 products {
   id
   name
   price
   description
 }

} ```

当 `products` 表中插入、更新或删除记录时,客户端将收到包含更改数据的通知。这对于构建实时 价格走势图交易信号 非常有用。

高级功能

  • **远程模式:** 允许你将其他 GraphQL API 集成到你的 Hasura GraphQL API 中。
  • **Actions:** 允许您在 GraphQL 层执行自定义逻辑,例如调用外部服务。
  • **事件:** 在数据库中发生特定事件时触发的 Webhooks。
  • **缓存:** Hasura 支持缓存,可以提高 API 的性能。
  • **监控:** Hasura 提供了监控指标,可以帮助你了解 API 的性能和使用情况。

与其他工具的集成

Hasura 可以与各种工具集成,例如:

总结

Hasura 是一个强大的 GraphQL 引擎,可以极大地简化 API 开发流程。它提供了即时 API、实时订阅、细粒度的权限控制和高性能等优势。通过本文的介绍,希望你对 Hasura 有了更深入的了解,并能够开始使用它构建自己的 GraphQL API。 理解 技术分析指标交易策略成交量分析 并将这些数据通过 Hasura 的 API 提供给前端,可以构建强大的交易应用程序。 此外,学习 风险回报比止损策略 的应用,可以增强你的交易系统的安全性。 了解 K线图 的解读以及 移动平均线 的运用,可以帮助你更好地分析市场趋势。 记住,持续学习 期权定价模型希腊字母 的知识,将提升你的专业水平。 最后,掌握 资金管理 的技巧,保证你的交易安全和稳定。

立即开始交易

注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)

加入我们的社区

订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源

Баннер