PostgREST

© Copyright Shutterstock/ Paolo De Gasperis
Inhaltsverzeichnis
Was ist PostgREST?
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
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.
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.
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 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?