postgREST 是一个独立的Web服务器, 将任何PostgreSQL数据库直接转换为RESTful API。 写在Haskell, 提供了更清洁,更符合标准的AP。 数据库的结构约束和权限决定了API的端点和操作。
PostgREST文档将其描述为“手动CRUD编程的替代方法”。 PostgREST是一个开源中间件 并且PostgREST公开的API符合OpenAPI规范(以前称为Swagger规范)。 根据其文档,它本机管理数据库表之间的依赖关系,从而使您可以通过简单的REST请求从两个表之间的联接中检索数据。
PostgREST将非常快,响应时间不到一秒钟 在免费的Heroku层上每秒最多可处理2000个请求。
该团队说:“如果您习惯用解释性语言编写的服务器,请准备好对PostgREST的性能感到惊喜。”
车队认为,三个因素会提高速度.
- 首先, 服务器是用Haskell编写的 使用HTTP Warp服务器(一种编译语言)。
- 然后, 将尽可能多的计算委托给数据库,包括将JSON响应直接序列化为SQL,验证数据等。
- 最后, 使用Hasql库维护数据库连接池(PostgreSQL二进制协议),并且保持无状态以允许水平缩放。
postgREST 处理身份验证(通过JSON Web令牌) 并将授权委派给数据库中定义的角色信息。 这样可以确保只有一个声明性的真实来源可以保证安全。
在处理数据库时, 服务器采用当前已认证用户的身份 在连接期间,它无法执行用户自己无法执行的任何操作。 可以在JWT原语中构造其他形式的身份验证。
另一方面 关于数据完整性,PostgREST 而不是依赖对象关系映射器 (ORM)和自定义命令式编码, 该系统直接在数据库上施加声明性约束。
因此,没有任何应用程序可以损害您的数据(包括您的API服务器)。 PostgREST为HTTP接口提供了各种备份,以避免出现问题,包括应用PUT请求。 换句话说,不涉及ORM。
新视图的创建在SQL中具有已知的性能影响。 关于PostgREST的最好之处在于,数据库管理员可以从头开始创建API,而无需自定义编程。
对于一些, PostgREST还是NoSQL或GraphQL数据库的有趣替代品 如果需要维护关系模型,则在API中本地公开。 他们感到遗憾的是,这种中间件在大型Linux发行版的软件包存储库中没有作为标准配置提供。
如何在Linux上安装PostgREST?
去年6.0.2月发布了XNUMX版,其中添加了新功能并进行了一些更改。 这个版本可以从github获得。
相似地,对于有兴趣安装PostgREST的人, 他们应该知道,现在可以在终结器的帮助下获得当前版本。 仅在其中输入:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-linux-x64-static.tar.xz
现在,他们只需要使用以下命令解压缩该软件包:
tar Jxf postgrest-v6.0.2-linux-x64-static.tar.xz
对于使用64位版本的Ubuntu的特殊情况:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntu.tar.xz
tar Jxf postgrest-v6.0.2-ubuntu.tar.xz
或针对使用32位版本的Ubuntu的用户
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntui386.tar.xz
tar Jxf postgrest-v6.0.2-ubuntui386.tar.xz
他们可以运行:
./postgrest --help
以相同的方式,准备了一个Docker映像,可以通过输入以下内容获得:
码头工人拉postgrest / postgrest
最后,您可以从其网站上的文档中获取有关其配置的更多信息。 链接是这个。