Se ha lanzado PostgREST 9.0.0, un servidor web independiente que implementa una ligera extensión para el sistema de gestión de bases de datos PostgreSQL, que traduce objetos desde una base de datos existente a una API RESTful. En lugar de reflejar datos relacionales en objetos (ORM), en PostgREST las vistas se crean directamente en la base de datos. En el lado de la base de datos también se realizan la serialización de respuestas JSON, la verificación de datos y la autorización. La capacidad del sistema es suficiente para manejar hasta 2000 solicitudes por segundo en un típico servidor. El código del proyecto está escrito en Haskell y se distribuye bajo la licencia MIT.
Por ejemplo, utilizando solo el mecanismo de privilegios en la base de datos, se puede proporcionar acceso a los datos (tablas, vistas y procedimientos almacenados) a través del protocolo HTTP. No es necesario codificar dicha traducción y generalmente basta con un comando GRANT para que una tabla esté disponible a través de la API REST. Existe la posibilidad de configurar el acceso mediante token (JWT) y organizar 'multitenancy' a través del uso de seguridad dinámica a nivel de filas (Row Level Security).
Arquitectónicamente, PostgREST se orienta hacia una arquitectura orientada a datos (Data-Oriented Architecture), donde los microservicios no mantienen su estado, sino que utilizan un acceso único a los datos (Data Access Layer).

Entre los cambios en la nueva versión:
- En la caché del esquema de almacenamiento se han añadido tablas particionadas, lo que ha permitido para tales tablas incrustar operaciones UPSERT e INSERT en la respuesta Location, realizar solicitudes OPTIONS e implementar soporte para OpenAPI.
- A través de RPC POST se permite llamar funciones con un parámetro no nombrado.
- Se permite llamar funciones con un parámetro JSON único sin el encabezado 'Prefer: params=single-object'.
- Se permite cargar en funciones datos de tipo bytea, utilizando solicitudes con 'Content-Type: application/octet-stream'.
- Se permite cargar en funciones texto, utilizando solicitudes con 'Content-Type: text/plain'.
- Se ha añadido soporte para el escape de caracteres dentro de dobles paréntesis, por ejemplo, '?col=in.("Double\"Quote"), ?col=in.("Back\\slash")'.
- Se ha proporcionado la capacidad de filtrar recursos de primer nivel basándose en filtros integrados ('/projects?select=*,clients!inner(*)&clients.id=eq.12').
- En el operador 'is' se permite el uso del valor 'unknown'.
- Se ha garantizado la compatibilidad con PostgreSQL 14 y se ha retirado el soporte para PostgreSQL 9.5.
Fuente: opennet.ru
