PostgreSQL生成RESTful神器PostgREST
当我们想要对PostgreSQL进行客户端上的操作时,我们需要从远端对数据库进行访问。这个时候PostgreSQL的神器PostgREST就可以出马了。PostgREST是一个能够帮助我们生成一系列用于操作PostgreSQL数据库的RESTful API的服务器。之前我还尝试过直接使用Nginx中的ngx_postgres模块进行数据的操作,但是实际使用下来发现非常的麻烦,并且RESTful style要求每个网址代表一种资源,在网址中不能有动词,只能有名词,而且所用的名词一般和数据库名称相同。然而,我在Nginx的使用中还并没有找到一种可以适配这种样式的方法,关于ngx_postgres这个模块,可以看一看我的这篇博客Nginx以及ngx_postgres安装以及配置 | Lucas的博客 和这一篇使用Java通过Nginx反向代理服务器操作PostgreSQL数据库 | Lucas的博客 ) 。
PostgREST的配置
PostgREST的下载安装也非常的方便,首先我们创建一个文件夹用来放置PostgREST的安装目录。这里我选择在/opt
目录下创建文件夹postgrest
,然后下载压缩包到~/pacakges
,压缩包最新版本可以在Release
v7.0.1 · PostgREST/postgrest
(github.com)里面找到,这里我下载的是7.0.1版本。
1 | sudo wget https://github.com/PostgREST/postgrest/releases/download/v7.0.1/postgrest-v7.0.1-linux-x64-static.tar.xz |
将压缩包解压到postgrest中
1 | cd ~/packages |
然后进入postgrest目录中,解压后只有一个可执行文件postgrest
,执行解压后的可执行文件。
1 | cd /opt/postgrest |
执行之后看到提示说明配置成功
1 | db-uri = "postgres://user:pass@localhost:5432/dbname" |
接下来配置配置文件,新建文件default.conf
,配置文件内容
1 | # postgrest.conf |
用设置好的配置文件启动postgrest
1 | cd /opt/postgrest |
启动之后,就会看到日志直接输出,可以通过Ctrl-C停止程序。我们可以通过调整将日志输出到日志文件,并且后台运行程序,日志文件应该保存在当前用户空间中,否则会出现权限问题。
1 | sudo nohup postgrest default.conf>~/postgrest.log & |
启动之后,我们就可以通过PostgREST进行Query或者Insertion了。
如果想要停止PostgREST,需要先找到它的进程,然后kill就好了
1 | ps -A | grep postgrest # 查看进程 |
PostgREST和Nignx联合使用
虽然PostgREST能够为我们提供强大的RESTful API帮助,但是它并未提供一些安全上的保障和措施。所以,在实际应用中,我们可以搭配强大的Nginx,用Nginx反向代理PostgREST。我们在Nginx的配置文件中加入如下配置:
1 | upstream postgrest { |
然后就可以直接通过http://hostname/api/
来对数据库进行操作
参考资料:【PostgREST 基本教程(一)】 PostgREST快速搭建 )
使用教程:官方文档