安装PostGraphile,并实施一个简单的GraphQL API的简单教程
PostGraphile是一种中间件,可以在PostgreSQL数据库上生成GraphQL API。有关PostGraphile的概述,请参阅以下文章。
本帖旨在说明如何安装PostGraphile并构建简单的GraphQL API的步骤。
安装PostGraphile
PostGraphile是一个在JavaScript的HTTP框架Express上实现的中间件,可以通过NPM进行安装。
# NPMでインストールする場合
npm install postgraphile
# Yarnでインストールする場合
yarn add postgraphile
安装PostgreSQL服务器
由于PostGraphile需要PostgreSQL服务器才能运行,因此需要先进行安装。在Homebrew上安装是最简单的方法。根据PostGraphile的运行要求,最新支持的官方版本是PostgreSQL v12,所以我们将安装版本12。
brew install postgresql@12
启动PostgreSQL服务器
在安装完PostgreSQL服务器后,启动它。启动命令如下:
/usr/local/opt/postgresql@12/bin/postgres -D /usr/local/var/postgresql@12
为了检查服务器连接,我们将使用psql命令执行SQL语句。
export PATH="/usr/local/opt/postgresql@12/bin:$PATH"
psql postgres:///postgres -c 'select version();'
如果出现以下结果,就可以了。
version
-------------------------------------------------------------------------------------------------------------------
PostgreSQL 12.7 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit
(1 row)
创建数据库
服务器准备完成后,我们将开始创建数据。首先,创建下一个文件database.sql。
create table if not exists authors
(
id serial not null primary key,
name text not null default ''
);
create table if not exists posts
(
id serial not null primary key,
title text not null default '',
body text not null default '',
author_id int not null references authors on update cascade on delete cascade
);
truncate table authors restart identity cascade;
truncate table posts restart identity cascade;
insert into authors
(name)
values
('alice'),
('bob'),
('carol');
insert into posts
(title, body, author_id)
values
('投稿1', '本文1', 1),
('投稿2', '本文2', 1),
('投稿3', '本文3', 1),
('投稿4', '本文4', 2),
('投稿5', '本文5', 2),
('投稿6', '本文6', 2),
('投稿7', '本文7', 3),
('投稿8', '本文8', 3),
('投稿9', '本文9', 3);
将此文件导入数据库并创建数据。
psql postgres:///postgres -f database.sql
我会确认一下数据是否已经输入。
psql postgres:///postgres -c 'select * from posts'
id | title | body | author_id
----+-------+-------+-----------
1 | 投稿1 | 本文1 | 1
2 | 投稿2 | 本文2 | 1
3 | 投稿3 | 本文3 | 1
4 | 投稿4 | 本文4 | 2
5 | 投稿5 | 本文5 | 2
6 | 投稿6 | 本文6 | 2
7 | 投稿7 | 本文7 | 3
8 | 投稿8 | 本文8 | 3
9 | 投稿9 | 本文9 | 3
(9 rows)
启动PostGraphile
数据库准备好了,现在开始启动PostGraphile。随着PostGraphile进入实际运营阶段,启动选项会变得越来越多,所以最好从一开始就准备一个启动脚本。启动脚本的文件名可以随便取,但这里我们将它命名为bin/postgraphile.sh。
#!/usr/bin/env bash
pnpx postgraphile \
--connection postgres:///postgres \
--watch
这个–watch选项是为了让GraphQL模式在数据库模式发生变化时也能相应地更改,以保持一致性。
不要忘记授予执行权限。
chmod +x bin/postgraphile.sh
我們將啟動PostGraphile。
./bin/postgraphile.sh
当启动时,GraphQL API会自动构建并进入可用状态。终端会显示一些信息,其中一个是在“GraphiQL GUI/IDE”中显示的URL,该URL可以在浏览器上试用GraphQL。请打开该URL,并尝试使用GraphQL。
试着使用已构建的GraphQL
打开GraphiQL图形用户界面/集成开发环境(GUI/IDE)后,尝试编写以下查询。
query GetPosts {
allPosts {
nodes {
id
title
body
authorByAuthorId {
id
name
}
}
}
}
当执行此操作时,应同时获取posts表的内容以及与posts表相关联的authors表的数据。
以上の手順を経て、PostGraphileのインストールからシンプルなGraphQL APIの構築まで完了しました。
总结
- PostGraphileをインストールし、シンプルなGraphQL APIを構築するまでの手順を説明しました。
继续
这篇帖子只是写了一点关于PostGraphile的入门知识。当实际使用时,我认为需要了解以下内容,所以接下来我会继续写下去。
-
- 認証と認可のやりかた
-
- マイグレーションのやりかた
- 複雑な検索条件をGraphQLで使えるようにする方法