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.

Um zu beginnen, muss zun├Ąchst der Projekt-Chatroom von PostgREST auf einer anderen Registerkarte ge├Âffnet werden.
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.

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.

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.

Tipp

Wenn Sie noch Fragen bez├╝glich eines Online Marketing Themas haben, dann k├Ânnen Sie gerne unseren Glossar besuchen und sich ├╝ber das Thema informieren, wo Sie noch speziell Fragen haben.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte