发布 PostgREST 9.0.0,用于将数据库转变为 RESTful API 的附加组件

PostgREST 9.0.0 发布了,这是一个独立运行的 Web 服务器,实现了 PostgreSQL DBMS 的轻量级附加组件,将现有数据库中的对象转换为 RESTful API。 PostgREST 不是将关系数据映射到对象 (ORM),而是直接在数据库中创建视图。数据库端还处理 JSON 响应的序列化、数据验证和授权。系统性能足以在典型服务器上每秒处理多达 2000 个请求。该项目代码是用 Haskell 编写的,并根据 MIT 许可证分发。

例如,仅使用数据库权限机制,您可以通过 HTTP 授予对数据(表、视图类型和存储过程)的访问权限。在这种情况下,无需对此类转换进行编码,通常一个 GRANT 命令就足以通过 REST API 使该表可用。可以通过令牌(JWT)配置访问并通过使用动态行级安全性(行级安全性)组织“多租户”。

从架构上来说,PostgREST 推动了面向数据的架构(Data-Oriented Architecture),其中微服务本身不保存状态,而是使用对数据的单一访问(数据访问层)来实现这一点。

发布 PostgREST 9.0.0,用于将数据库转变为 RESTful API 的附加组件

新版本的变化包括:

  • 分区表被添加到存储模式缓存中,这使得此类表可以在位置响应中嵌入 UPSERT 和 INSERT 操作、执行 OPTIONS 查询并实现 OpenAPI 支持。
  • 通过 RPC POST,允许使用一个未命名参数调用函数。
  • 允许使用一个 JSON 参数调用函数,而不需要“Prefer: params=single-object”标头。
  • 允许使用“Content-Type: application/octet-stream”查询将 bytea 类型的数据加载到函数中。
  • 允许使用“Content-Type:text/plain”查询将文本加载到函数中。
  • 添加了对双括号内转义字符的支持,例如“?col=in.("Double\"Quote")、?col=in.("Back\\slash")"。
  • 提供了基于内置过滤器(“/projects?select=*,clients!inner(*)&clients.id=eq.12”)过滤一级资源的功能。
  • “is”运算符允许值“unknown”。
  • 已实现与 PostgreSQL 14 的兼容性,并且已停止对 PostgreSQL 9.5 的支持。

来源: opennet.ru

添加评论