如何使用Hasura创建一个实时的GraphQL API
Hasura是一个开源的工具,可以轻松地将PostgreSQL数据库转换为GraphQL API。它提供了一种快速、简单且易于使用的方式,使开发人员能够快速构建现代化的GraphQL API。以下是使用Hasura创建实时GraphQL API的指南:
- 安装和配置Hasura
1.我们需要安装和配置Hasura。安装Hasura可以使用Docker容器或二进制文件。我们可以在官方网站上找到Hasura的安装和配置文档。在安装Hasura之后,我们需要配置连接到我们的PostgreSQL数据库。我们可以在Hasura控制台中配置连接信息。
- 定义GraphQL Schema
2.我们需要定义GraphQL Schema,以便我们的API可以遵循它。我们可以在Hasura控制台中使用Schema页面定义GraphQL Schema。在Schema页面中,我们可以添加数据库表,并为它们定义类型。Hasura将自动生成相应的GraphQL类型和查询操作。例如,如果我们添加一个名为use的表,Hasura将自动生成一个名为User的GraphQL类型和一个名为user的查询操作。
在Schema页面中,我们还可以定义关系和自定义查询。例如,如果我们有一个名为posts的表和一个名为use的表,我们可以定义一个关系,将它们联系起来。我们还可以定义自定义查询操作,以便客户端可以执行特定的查询操作。
- 订阅实时更新
Hasura还提供了一个名为实时查询的功能,它允许客户端在数据库更改时立即接收通知。为了订阅实时更新,我们需要使用Hasura提供的实时查询API。我们可以使用Websocket或HTTP协议来连接到实时查询API,并订阅我们感兴趣的表或自定义查询。
例如,我们可以使用以下代码来连接到Hasura实时查询API,并订阅名为posts的表:
javascriptCopy code
cot { createClient } = require('@hasura/graphql-engine-ws');
cot client = createClient({
url: 'ws:localhost:8080/v1/graphql',
});
cot subscription = client.subscribe({
query: `
subscription {
posts {
id
title
}
}
`,
});
subscription.on('data', (data) = coole.log(data));
在上面的代码中,我们使用@hasura/graphql-engine-ws库创建了一个WebSocket客户端,并使用subscribe方法订阅了名为posts的表。当有新数据插入到posts表中时,我们将在控制台中看到输出。
- 添加权限和验证
Hasura还提供了一种灵活的权限模型,可以轻松地为GraphQL API添加身份验证和授权。我们可以在Hasura控制台中为每个表和自定义查询定义角色和权限。例如,我们可以为用户表定义一个名为user的角色,并限制它只能读取自己的数据。我们还可以定义一个名为admin的角色,并允许它执行任何操作。
Hasura还支持多种身份验证方法,例如,我们可以使用JWT令牌进行身份验证。我们可以定义一个名为jwt的身份验证器,并在Hasura控制台中为其指定公钥。客户端可以在Authorization标头中包含JWT令牌,Hasura将验证令牌并根据令牌中的声明授予相应的角色和权限。
- 部署Hasura
3.我们需要将Hasura部署到生产环境中。Hasura可以轻松部署到任何云提供商,如AWS、GCP或Azure。我们可以使用Hasura提供的Docker镜像,将Hasura部署到Docker容器中,并使用Kubernetes或Docker Compose进行编排。
Hasura还提供了一个名为Hasura Cloud的托管服务,可以轻松地将Hasura部署到云中,并提供许多有用的功能,如自动扩展、实时监控和可视化查询计划。
使用Hasura创建实时GraphQL API非常简单。它提供了一个快速、简单和易于使用的方式,使开发人员能够快速构建现代化的API。Hasura还提供了许多有用的功能,如实时查询、权限和验证、自定义查询和许多部署选项。