Skip to main content

PostgREST

Was ist PostgREST?

PostgREST ist ein eigenständiger Webserver, der die PostgreSQL-Datenbank direkt in eine RESTful-API umwandelt. Die strukturellen Einschränkungen und Berechtigungen in der Datenbank bestimmen die API-Endpunkte und -Operationen.

PostgREST verfügt über einen fokussierten Umfang. Es funktioniert gut mit anderen Tools, wie zum Beispiel Nginx. Hierdurch können die CRUD-Vorgänge sauber von anderen Anliegen getrennt werden.

Ziel

Die Verwendung von PostgREST ist eine Alternative zur manuellen CRUD-Programmierung (CRUD = Akronym der vier elementaren Operationen im Datenmanagement). Benutzerdefinierte API-Server haben Probleme und durch das Schreiben von Geschäftslogik wird die Datenbankstruktur häufig dupliziert, ignoriert oder verwirrt. Objektrelationales Mapping ist eine undichte Abstraktion, die zu langsamen imperativem Code führt. Die PostgREST-Philosophie legt eine einzige deklarative Quelle der Wahrheit fest: die Daten selbst.

Deklarative Programmierung

Es ist einfacher, PostgreSQL aufzufordern, Daten zu verknüpfen und den Abfrageplaner die Details herausfinden zu lassen, als selbst die Zeilen durchlaufen zu lassen. Des Weiteren empfiehlt es sich, db-Objekten Berechtigungen zuzuweisen, anstatt Schutzvorrichtungen in Controllern hinzuzufügen. Dies gilt insbesondere für das Kaskadieren von Berechtigungen in Abhängigkeit von Daten (kaskadieren = in der Elektronik und Elektrotechnik das Hintereinanderschalten und Verketten mehrerer Module oder Baugruppen). Das Festlegen von Einschränkungen ist einfacher als das Herabsetzen von Code mit einem sog. Sanity Check (Plausibilitätsprüfung).

Auslaufsichere Abstraktion / Leak-proof Abstraction

Es ist kein ORM (Abkürzung für: Object-Relational Mapping) beteiligt. Das Erstellen neuer Ansichten geschieht in SQL mit bekannten Auswirkungen auf die Leistung. Ein Datenbank-Administrator kann jetzt eine API ohne benutzerdefinierte Programmierung neu erstellen.

Eigenschaften

Gemeinsame Verbesserungen

Wie bei jedem Open-Source Projekt, profitieren auch die Nutzer von PostgREST von Funktionen und Korrekturen im Tool. Dies ist vorteilhafter als Korrekturen, die untrennbar mit benutzerdefinierten Codebasen verbunden sind.

Support-Team

Das Projekt verfügt über eine wachsende Gemeinschaft. Bei Fragen können User jederzeit einem Chat-Room beitreten und ihre Vorgänge diskutieren und um sich gegenseitig zu helfen. Auch Fehler oder Funktionen auf der Seite mit Github-Problemen können beim Support-Team gemeldet oder gesucht werden.

PostgreSQL

PostgreSQL ist ein objektrationales Datenbank-Verwaltungssystem mit dem Schwerpunkt der Erweiterbarkeit und Einhaltung von Standards. Es kann Arbeitslasten verarbeiten, die von kleinen Einzelcomputer-Anwendungen bis zu großen Internetanwendungen (oder für das Data Warehousing) mit vielen gleichzeitigen Benutzern reichen. Auf macOS-Server ist PostgreSQL die Standarddatenbank und ist auch für Microsoft Windows und Linux verfügbar.

PostgreSQL ist ACID-konform und transaktionsfähig. Es verfügt über aktualisierbare und materialisierte Ansichten, Auslöser und Fremschlüssel. Zudem unterstützt es andere Funktionen und gespeicherte Prozeduren. Es handelt sich um ein kostenloses Open-Source und wird unter den Bedingungen der PostgreSQL-Lizenz veröffentlicht.

Tutorial

PostgREST ist ein eigenständiger Webserver, der eine PostgreSQL-Datenbank ist und eine RESTful-API umwandelt. Es stellt eine API bereit, die an die Struktur der zugrunde liegenden Datenbank angepasst wird.
Um eine API zu erstellen, wird einfach eine Datenbank erstellt. Alle Endpunkte und Berechtigungen stammen von Datenbankobjekten wie Tabellen, Ansichten, Rollen und gespeicherten Prozeduren.

1. Schritt
Um zu beginnen, muss zunächst der Projekt-Chatroom von PostgREST auf einer anderen Registerkarte geöffnet werden.

2. Schritt
Es wird eine moderne Kopie der Datenbank benötigt, die auf dem System ausgeführt wird, entweder nativ oder in einer Docker-Instanz. Dazu ist PostgreSQL 9.3 oder höher erforderlich, es wird jedoch mindestens Version 9.5 empfohlen, da hier die Sicherheitsfunktionen auf der Zeilenebene vorhanden sind.

Ist PostgreSQL bereits auf dem System installiert, kann die vorhandene Installation verwendet werden. Sofern Docker noch nicht installiert ist (in diesem Tutorial wird auf die Datenbank in Docker Bezug genommen), sollte es heruntergeladen werden. Dadurch wird die Docker-Instanz als Daemon ausgeführt und der Port 5433 für das Hostsystem verfügbar gemacht, sodass er für den Rest des Systems wie ein normaler PostgreSQL-Server aussieht.

3. Schritt
PostgREST wird als einzelne Binärdatei verteilt, wobei die Versionen für große Linux/BSD/Windows-Distributionen kompiliert werden. Die vorgefertigten Binärdateien zum Herunterladen sind komprimierte .tar.xz-Dateien (mit Ausnahme von Windows, das eine ZIP-Datei ist). Um die Binärdateien zu extrahieren, muss das Terminal aufgerufen werden.
Das Ergebnis ist eine Datei mit dem Namen postgrest (oder postgrest.exe unter Windows).

Wenn alles korrekt funktioniert, werden die Versionen und Informationen zur Konfiguration ausgedruckt. Der User kann diese Binärdatei von dort aus ausführen, wo sie heruntergeladen wurde.

4. Schritt
Nun ist eine Verbindung zur SQL-Konsole (psql) im Container erforderlich. Dazu ist folgende Befehlszeile auszuführen: sudo docker exec – it tutorial psql – U postgres. Anschließend sollte die Eingabeaufforderung psql erscheinen.

Nun ist ein benanntes Schema für die Datenbankobjekte zu erstellen, das in der API verfügbar gemacht wird. Hierfür kann der Name frei gewählt werden. Diese und die anderen SQL-Anweisungen sind nun in der gestarteten psql-Eingabeaufforderung auszuführen.

Die API wird einen Endpunkt (/todos) haben, der aus einer Tabelle stammt. Anschließend muss eine Rolle für anonyme Webanfragen (web_anon) erzeugt werden. Wenn eine Anforderung eingeht, wechselt PostgREST in diese Rolle in der Datenbank, um die Abfragen zu beantworten.

Die Rolle web_anon hat die Berechtigung, auf Elemente im API-Schema zuzugreifen und Zeilen in der todos-Tabelle zu lesen. Es empfiehlt sich, eine dedizierte Rolle für die Verbindung zur Datenbank zu erstellen, anstatt die hochprivilegierte Postgres-Rolle zu verwenden.
Nun muss web_anon dem Authentifikator gewährt werden und anschließend psql zu beenden. Die API kann jetzt gestartet werden.

PostgREST verwendet eine Konfigurationsdatei, um anzugeben, wie eine Verbindung zur Datenbank herstellt werden soll. Der Server ist nun bereit, Webanfragen zu verarbeiten.

Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG