Die Veröffentlichung von PostgREST 9.0.0, einem eigenständig betriebenen Webserver, der eine leichte Erweiterung für die PostgreSQL-Datenbankmanagementsystem umsetzt, die Objekte aus einer bestehenden Datenbank in ein RESTful API überträgt. Anstelle der Abbildung relationaler Daten in Objekte (ORM) werden in PostgREST die Ansichten direkt in der Datenbank erstellt. Auch die Serialisierung von JSON-Antworten, die Datenvalidierung und die Autorisierung erfolgen auf der Datenbankseite. Die Systemleistung reicht aus, um bis zu 2000 Anfragen pro Sekunde unter typischen Bedingungen zu bearbeiten. Server. Der Code des Projekts ist in Haskell geschrieben und unter der MIT-Lizenz erhältlich.
Zum Beispiel kann man allein mit dem Berechtigungssystem der Datenbank den Datenzugriff (auf Tabellen, Ansichten und gespeicherte Prozeduren) über das HTTP-Protokoll bereitstellen. Dabei ist keine Kodierung dieser Übertragung erforderlich, und oft reicht ein GRANT-Befehl aus, um eine Tabelle über das REST API verfügbar zu machen. Es besteht die Möglichkeit, den Zugriff über Token (JWT) einzurichten und "Multitenancy" durch den Einsatz dynamischer Sicherheit auf Zeilenebene (Row Level Security) zu organisieren.
Architektur PostgREST fördert eine datenzentrierte Architektur (Data-Oriented Architecture), in der Mikrodienste keinen eigenen Zustand speichern, sondern über eine einheitliche Datenzugriffs-Schicht (Data Access Layer) darauf zugreifen.

Zu den Änderungen in der neuen Version gehören:
- In das Speicherkassenschema wurden partitionierte Tabellen eingefügt, was es ermöglicht, für solche Tabellen UPSERT- und INSERT-Operationen in der Antwort Location zu integrieren, OPTIONS-Anfragen durchzuführen und OpenAPI-Unterstützung zu implementieren.
- Über RPC POST ist es erlaubt, Funktionen mit einem nicht benannten Parameter aufzurufen.
- Es ist erlaubt, Funktionen mit einem JSON-Parameter ohne den Header «Prefer: params=single-object» aufzurufen.
- Es ist erlaubt, Daten vom Typ bytea in Funktionen hochzuladen, indem Anfragen mit «Content-Type: application/octet-stream» verwendet werden.
- Es ist erlaubt, Text in Funktionen hochzuladen, indem Anfragen mit «Content-Type: text/plain» gesendet werden.
- Unterstützung für die Escape-Zeichen innerhalb von doppelten Klammern wurde hinzugefügt, zum Beispiel «?col=in.(«Double\»Quote»), ?col=in.(«Back\\slash»)».
- Die Möglichkeit wurde eingeführt, Filter für Ressourcen der ersten Ebene basierend auf eingebetteten Filtern zu nutzen, wie beispielsweise «/projects?select=*,clients!inner(*)&clients.id=eq.12».
- Im Operator «is» ist die Verwendung des Wertes «unknown» erlaubt.
- Die Kompatibilität mit PostgreSQL 14 wurde gewährleistet und die Unterstützung für PostgreSQL 9.5 eingestellt.
Quelle: opennet.ru
