PostgREST,适用于用Haskell编写的任何PostgreSQL数据库的REST API

PostgREST徽标

postgREST 是一个独立的Web服务器, 将任何PostgreSQL数据库直接转换为RESTful API。 写在Haskell, 提供了更清洁,更符合标准的AP。 数据库的结构约束和权限决定了API的端点和操作。

PostgREST文档将其描述为“手动CRUD编程的替代方法”。 PostgREST是一个开源中间件 并且PostgREST公开的API符合OpenAPI规范(以前称为Swagger规范)。 根据其文档,它本机管理数据库表之间的依赖关系,从而使您可以通过简单的REST请求从两个表之间的联接中检索数据。

PostgREST将非常快,响应时间不到一秒钟 在免费的Heroku层上每秒最多可处理2000个请求。

该团队说:“如果您习惯用解释性语言编写的服务器,请准备好对PostgREST的性能感到惊喜。”

车队认为,三个因素会提高速度.

  1. 首先, 服务器是用Haskell编写的 使用HTTP Warp服务器(一种编译语言)。
  2. 然后, 将尽可能多的计算委托给数据库,包括将JSON响应直接序列化为SQL,验证数据等。
  3. 最后, 使用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

最后,您可以从其网站上的文档中获取有关其配置的更多信息。 链接是这个。


在 Google 中将其添加为首选来源