PostgREST und pg_graphql
In a nutshell: Das Prinzip von PostgREST ist mega elegant. Man baut eine saubere Datenbank in PostgreSQL und definiert ein Schema (üblicherweise einfach public), für das PostgREST REST-API-Endpunkte generieren soll. Dazu generiert PostgREST via DB-Introspektion eine OpenAPI-Description (momentan noch OpenAPI v2.0; v3+ ins in Arbeit). Die OpenAPI-Description ist nichts anderes als eine standardisierte Beschreibung der kompletten REST-API als strukturiertes JSON und erlaubt wiederum anderer Software, daraus Zeugs zu generieren. Wie bspw. SwaggerUI, ein nettes Web-frontend für REST-APIs (etwa zur öffentlichen Dokumentation der API). Metadaten für API-Endpunkte und Parameter können dabei schlicht als SQL-COMMENTs definiert werden – also alles direkt aus der DB.
Weiter könnte dann noch die PostgreSQL-Extension pg_graphql installiert werden, die kompatibel mit PostgREST ist und einen zusätzlichen API-Endpunkt /rpc/graphql bereitstellt, unter dem die Daten der DB via GraphQL-Abfragen bereitstehen.
Das ganze ist relativ wartungsarm, da alles aus der Semantik der PG-DB generiert wird – man muss nach einmaliger Einrichtung im Prinzip nur die DB weiterentwickeln/pflegen, alles darüber ist +/- "install and forget".
Wir nutzen so ein Setup für die "Referendum Database", Code bzw. Config findet sich bei Interesse hier.