PostgREST:适用于任何Postgres数据库的REST API

2020-11-22 01:07:08

PostgREST可从任何现有PostgreSQL数据库提供完全RESTful API。它提供了比您可能从头开始编写的更干净,更符合标准的API,速度更快。

TLDR;亚秒级的响应时间,在Herokufree层上最多每秒2000个请求。如果您习惯用解释性语言编写的服务器,请做好准备以使PostgREST性能惊喜。

三个因素促成了速度。首先使用WarpHTTP服务器(又称轻量级线程的编译语言)将服务器用Haskell编写,然后将尽可能多的计算委托给数据库,包括

PostgREST处理身份验证(通过JSON WebToken),并将授权委派给数据库中定义的角色信息。这确保了安全性的唯一声明性真相来源。在处理数据库时,服务器假定当前已认证的用户的身份,并且在连接期间无法执行用户自己无法执行的任何操作。可以在JWT原语之上构建其他形式的身份验证。有关更多信息,请参阅文档。

PostgreSQL 9.5支持真正的行级安全性。在以前的版本中,可以使用触发器和安全屏障视图进行模拟。由于对数据库的可能查询仅限于使用防泄漏功能的某些模板,因此触发器解决方法不会损害行级安全性。

健壮且使用寿命长的API需要自由地存在于多个版本中。 PostgREST通过数据库模式进行版本控制。这样一来,您就可以在不使应用变脆的情况下公开表和视图。底层的表可以被替换并隐藏在公共面对的视图后面。

PostgREST使用OpenAPI标准来生成API的最新文档。您可以使用Swagger-UI之类的工具来渲染交互式文档,以针对实时API服务器进行演示请求。

该项目也使用HTTP来传达其他元数据。例如,端点返回的行数由-和-受范围标头限制。关于更多。

该系统不需要依赖对象关系映射器和自定义命令式编码,而是需要将声明性约束直接放入数据库中。因此,没有应用程序可以破坏您的数据(包括您的API服务器)。

PostgREST为HTTP接口提供了安全防范措施,以防止意外情况,例如强制执行幂等PUT请求。

通过代码和良好的判断力对PostgREST进行了极大改进的项目贡献者。在变更日志中查看更多详细信息。