Lanzamento de PostgREST 9.0.0, complementos para converter a base de datos nunha API RESTful

Tivo lugar o lanzamento de PostgREST 9.0.0, un servidor web que funciona por separado coa implementación dun complemento lixeiro para o DBMS PostgreSQL, que traduce obxectos dunha base de datos existente nunha API RESTful. En lugar de mapear datos relacionais en obxectos (ORM), PostgREST crea vistas directamente na base de datos. O lado da base de datos tamén xestiona a serialización de respostas JSON, a validación de datos e a autorización. O rendemento do sistema é suficiente para procesar ata 2000 solicitudes por segundo nun servidor típico. O código do proxecto está escrito en Haskell e distribúese baixo a licenza MIT.

Por exemplo, usando só o mecanismo de privilexios de base de datos, pode conceder acceso aos datos (táboas, tipos de vista e procedementos almacenados) a través de HTTP. Neste caso, non é necesario codificar tal tradución e normalmente un comando GRANT é suficiente para que a táboa estea dispoñible a través da API REST. É posible configurar o acceso por token (JWT) e organizar o "multitenancy" mediante o uso da seguridade dinámica a nivel de fila (Row Level Security).

Desde o punto de vista arquitectónico, PostgREST impulsa unha arquitectura orientada aos datos (Data-Oriented Architecture), onde os microservizos non gardan os propios estados, senón que utilizan un único acceso aos datos (Capa de acceso a datos) para iso.

Lanzamento de PostgREST 9.0.0, complementos para converter a base de datos nunha API RESTful

Entre os cambios na nova versión:

  • Engadíronse táboas particionadas á caché do esquema de almacenamento, o que fixo posible que estas táboas incorporasen operacións UPSERT e INSERT na resposta de localización, executasen consultas OPTIONS e implementaran compatibilidade con OpenAPI.
  • A través de RPC POST permítese chamar funcións cun parámetro sen nome.
  • Permítese chamar funcións cun parámetro JSON sen a cabeceira "Prefer: params=single-object".
  • Permítese cargar datos de tipo bytea en funcións mediante consultas con "Tipo de contido: aplicación/fluxo de octetos".
  • Permítese cargar texto en funcións mediante consultas con "Tipo de contido: texto/sen formato".
  • Engadiuse compatibilidade para escapar caracteres entre corchetes dobres, por exemplo, "?col=in.("Dobre\"Cita"), ?col=in.("Back\\slash")".
  • Proporcionouse a capacidade de filtrar recursos de primeiro nivel baseándose en filtros integrados ("/projects?select=*,clients!inner(*)&clients.id=eq.12".
  • O operador "is" permite o valor "descoñecido".
  • Alcanzouse a compatibilidade con PostgreSQL 14 e descontinuouse o soporte para PostgreSQL 9.5.

Fonte: opennet.ru

Engadir un comentario