PostgREST 9.0.0 veröffentlicht, ein Tool, um Datenbanken in RESTful APIs umzuwandeln

Die Veröffentlichung von PostgREST 9.0.0, einem eigenständigen Webserver mit einer einfachen Erweiterung für das PostgreSQL-Datenbanksystem, ist erfolgt, die Objekte aus einer bestehenden Datenbank in ein RESTful API umwandelt. Anstatt relationale Daten in Objekte (ORM) abzubilden, werden in PostgREST die Ansichten direkt in der Datenbank erstellt. Die Serialisierung von JSON-Antworten, die Datenvalidierung und die Autorisierung erfolgen ebenfalls auf Datenbankseite. Die Systemleistung reicht aus, um bis zu 2000 Anfragen pro Sekunde zu verarbeiten. ServerDer Projektcode ist in Haskell geschrieben und steht unter der MIT-Lizenz.

Zum Beispiel kann der Zugriff auf Daten (Tabellen, Ansichten und gespeicherte Prozeduren) über HTTP lediglich mithilfe des Berechtigungsmechanismus in der Datenbank gewährt werden. Zu diesem Zweck ist keine Kodierung dieser Übersetzung erforderlich, und in der Regel reicht ein einziger Befehl GRANT aus, damit eine Tabelle über die REST API zugänglich wird. Es besteht die Möglichkeit, den Zugriff über Token (JWT) zu konfigurieren und eine "Multitenancy" durch dynamische Sicherheit auf Zeilenebene (Row Level Security) zu implementieren.

Architektonisch drängt PostgREST zu einer datenorientierten Architektur (Data-Oriented Architecture), bei der Mikroservices ihren Zustand nicht selbst speichern, sondern stattdessen einen einheitlichen Datenzugriff (Data Access Layer) nutzen.

PostgREST 9.0.0 veröffentlicht, ein Tool, um Datenbanken in RESTful APIs umzuwandeln

Zu den Neuerungen in der neuen Version gehören:

  • In den Speicher-Schema-Caches wurden partitionierte Tabellen hinzugefügt, was es ermöglicht, für solche Tabellen UPSERT- und INSERT-Operationen in der Location-Antwort einzubetten, OPTIONS-Anfragen auszuführen und die Unterstützung von OpenAPI zu implementieren.
  • Über RPC POST ist es erlaubt, Funktionen mit einem nicht benannten Parameter aufzurufen.
  • Erlaubt ist der Aufruf von Funktionen mit einem JSON-Parameter ohne den Header "Prefer: params=single-object".
  • Erlaubt ist das Hochladen von Daten mit dem Typ bytea in Funktionen über Anfragen mit "Content-Type: application\/octet-stream".
  • Erlaubt ist das Hochladen von Text in Funktionen über Anfragen mit "Content-Type: text\/plain".
  • Die Unterstützung für die Escape-Zeichen innerhalb von doppelten Klammern wurde hinzugefügt, z. B. "?col=in.("Double\"Quote"), ?col=in.("Back\\slash").
  • Die Möglichkeit zur Filterung von Ressourcen der ersten Ebene basierend auf eingebauten Filtern wurde bereitgestellt ("/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 sichergestellt und die Unterstützung für PostgreSQL 9.5 eingestellt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4