我尝试使用Hasura [初学者]
使用REST与数据库进行交互时似乎是最新的做法,但现在有一种叫做GraphQL的东西更加时尚。
REST是一种思维方式,通过区分端点使其更易于直观理解,但在需要使用多个表格的数据时却不太方便。需要先获取数据,然后再进行一次GET请求…
另一方面,如果使用GraphQL,则可以将端点统一为一个,同时可以像处理JSON一样轻松地获取多个表格的数据。
我尝试使用一个名为Hasura的API服务器,它可以自动将GraphQL和SQL转换。
公式文件
https://hasura.io/docs/1.0/graphql/core/index.html 的内容请以中文为母语进行描述。
安装
从零开始的方法有以下两种。
-
- Harura Cloud
- Docker
这次我们将给出一个使用Docker的例子。
在新的目录下运行以下命令之一来获取docker-compose文件。
wget https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml
# or
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml
以下是docker-compose的内容。
version: '3.6'
services:
postgres:
image: postgres:12
restart: always
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: postgrespassword
graphql-engine:
image: hasura/graphql-engine:v1.3.1
ports:
- "8080:8080"
depends_on:
- "postgres"
restart: always
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
## enable the console served by server
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
## enable debugging mode. It is recommended to disable this in production
HASURA_GRAPHQL_DEV_MODE: "true"
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
## uncomment next line to set an admin secret
# HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
db_data:
2. 启动
如果没有特别需要更改的话,就直接启动。
docker-compose up -d
3. 检查 Hasura 控制台
如果成功启动,应该会在http://localhost:8080/console上显示以下画面。
输入数据并发出查询
1. 制作桌子
我們馬上要開始製作表格。
為了真正體驗到GraphQL的強大,這次我們將製作主表格以及該表格的子表格。(如果使用REST,需要從主表格中取得資料並進一步進行GET,但GraphQL可以一次完成,這就是它的厲害之處)
-
- 点击顶部的DATA选项卡
-
- 点击Create Table按钮
-
- 输入列
- 子表也一样
2. 设置表之间的关系。
-
- 点击Data选项卡
-
- 选择子表
点击Modify选项卡
在外键中进行设置
选择父表
点击Relationships选项卡
在表关系中的Array relationships中应该反映了刚刚在子表中添加的设置,因此点击Add按钮
输入在查询中使用的参数名
3. 发送查询
让我们在GRAPHIQL选项卡的页面上执行最后的查询,以确认是否可以获取数据。