Lanzamiento de PostgREST 9.0.0, complementos para convertir la base de datos en una API RESTful

Se lanzó PostgREST 9.0.0, un servidor web que opera por separado con la implementación de un complemento liviano para el DBMS PostgreSQL, que traduce objetos de una base de datos existente a una API RESTful. En lugar de mapear datos relacionales en objetos (ORM), PostgREST crea vistas directamente en la base de datos. El lado de la base de datos también maneja la serialización de respuestas JSON, la validación de datos y la autorización. El rendimiento del sistema es suficiente para procesar hasta 2000 solicitudes por segundo en un servidor típico. El código del proyecto está escrito en Haskell y distribuido bajo la licencia MIT.

Por ejemplo, utilizando únicamente el mecanismo de privilegios de la base de datos, puede otorgar acceso a los datos (tablas, tipos de vistas y procedimientos almacenados) a través de HTTP. En este caso, no es necesario codificar dicha traducción y normalmente un comando GRANT es suficiente para que la tabla esté disponible a través de la API REST. Es posible configurar el acceso por token (JWT) y organizar el “multitenancy” mediante el uso de seguridad dinámica a nivel de fila (Row Level Security).

Arquitectónicamente, PostgREST avanza hacia una arquitectura orientada a datos (Arquitectura orientada a datos), donde los microservicios no guardan estados por sí mismos, sino que utilizan un acceso único a los datos (Capa de acceso a datos) para ello.

Lanzamiento de PostgREST 9.0.0, complementos para convertir la base de datos en una API RESTful

Entre los cambios de la nueva versión:

  • Se agregaron tablas particionadas al caché del esquema de almacenamiento, lo que hizo posible que dichas tablas incrustaran operaciones UPSERT e INSERT en la respuesta de Ubicación, ejecutar consultas OPCIONES e implementar soporte OpenAPI.
  • A través de RPC POST se permite llamar funciones con un parámetro sin nombre.
  • Está permitido llamar a funciones con un parámetro JSON sin el encabezado "Prefer: params=single-object".
  • Está permitido cargar datos de tipo bytea en funciones mediante solicitudes con "Tipo de contenido: aplicación/flujo de octeto".
  • Se permite cargar texto en funciones mediante consultas con "Tipo de contenido: texto/sin formato".
  • Se agregó soporte para caracteres de escape dentro de corchetes dobles, 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”.
  • El operador "es" permite el valor "desconocido".
  • Se logró la compatibilidad con PostgreSQL 14 y se suspendió la compatibilidad con PostgreSQL 9.5.

Fuente: opennet.ru

Añadir un comentario