PostgREST ersetzt 80 % deines Backend-Codes

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Was wäre, wenn deine Postgres-Datenbank die API wäre und du überhaupt keinen Backend-Code schreiben müsstest?
00:00:05Jedes Mal, wenn du eine API baust, schreibst du denselben Backend-Code immer wieder. Routen, Controller, Validierung, Auth,
00:00:14all das nur, um mit deiner Datenbank zu kommunizieren. Dann änderst du eine Spalte und alles bricht zusammen. Kein benutzerdefinierter Backend-Code. Keine Controller. Keine ORM-Ebene.
00:00:21Genau das macht PostgREST. Es ist der Motor hinter Supabase. Es bewältigt echten Produktions-Traffic und in nur wenigen Minuten
00:00:29werde ich dir zeigen, wie das geht.
00:00:31Wenn du APIs baust, trifft dieses Tool die nervigsten Schmerzpunkte im gesamten Stack.
00:00:40Duplizierte Logik. Du definierst die Daten in der Datenbank.
00:00:44Dann definierst du Zugriffsregeln, Backend-Code und Validierung an einer anderen Stelle.
00:00:49Dann machen wir dasselbe für das Response-Handling woanders. Dasselbe System, mehrere Ebenen, mehrfache Fehlerquellen.
00:00:56Postgres macht damit Schluss. Es hat über 26.000 Sterne auf GitHub und wird von Supabase im Produktionsmaßstab eingesetzt.
00:01:03Es verwandelt dein Schema in wenigen Minuten in eine produktionsreife REST-API. Es gibt kein ORM, keine Controller.
00:01:10Die Sicherheit liegt in der Datenbank, was weniger Duplikation, weniger Wartung und viel weniger Zeitaufwand für den langweiligen Teil bedeutet.
00:01:19Ich zeige es dir. Wenn dir Coding-Tools gefallen, die deinen Workflow beschleunigen, abonniere unbedingt den Kanal.
00:01:24Wir bringen ständig neue Videos heraus.
00:01:26Alles klar. Jetzt bauen wir das Ganze mal auf. Okay, hier ist das Setup. Drei Container.
00:01:32Das ist alles. Postgres, PostgREST und Swagger UI für die Dokumentation.
00:01:38Hier ist die Docker-Compose-Datei. Da passiert nicht viel. Nur drei Dienste, die ich miteinander verbunden habe.
00:01:45Ich starte es mit dem bewährten Befehl docker-compose. Es läuft an und ich bin fertig.
00:01:51Kein Installieren von Abhängigkeiten. Kein Aufsetzen eines Servers. Schauen wir uns nun die Datenbank an.
00:01:55Ich führe diesen Docker-Befehl hier aus und das war's. Eine super einfache Todos-Tabelle. ID, Titel, erledigt, erstellt, alles Standard.
00:02:04Das ist wirklich alles, was hier passiert. Aber jetzt kommt der Teil, an dem es nützlich wird.
00:02:09Row-Level Security. Wir definieren direkt in SQL innerhalb der Datenbank, wer auf was zugreifen darf.
00:02:17Keine Backend-Auth-Logik, die irgendwo anders in unserem System sitzt. Hier ist die Richtlinie.
00:02:22Ich habe anonymen Vollzugriff mit true eingestellt. Vorerst ist also alles erlaubt. Pass jetzt auf.
00:02:29Ich rufe die Todos mit diesem Curl-Befehl ab und das war's. Vollständiges JSON direkt aus Postgres.
00:02:35Kein API-Code. Darauf aufbauend filtere ich es jetzt kurz. Es funktioniert sofort.
00:02:41Wenn ich es sortiere, boom, da haben wir's. Jetzt erstellen wir eine neue Zeile, senden einen POST-Request mit JSON-Body und fertig.
00:02:50Und es ist bereits in der Datenbank. Es gibt keine ORM-Ebene, die hier hinterherhinken muss.
00:02:56Und hier ist der Teil, der die Leute wirklich begeistert: OpenAPI-Docs, automatisch generierte Swagger UI. Es ist einfach da.
00:03:04Ich öffne es und wir erhalten eine voll interaktive API. Du kannst alles erkunden, Endpunkte testen und Schemas sehen.
00:03:11Von Null an hast du nun vollständiges CRUD, Filtern, Sortieren, Paginierung. Du hast Basis-Auth via RLS und Docs in unter einer Minute.
00:03:21Warum nutzen Leute das überhaupt? Falls das noch nicht genug war: Weil traditionelle Backend-Arbeit eine Last ist.
00:03:26Und das meiste davon ist keine Produktarbeit. Was wir eigentlich tun, ist reine Wartungsarbeit, oder?
00:03:33Denk an den normalen Stack, vielleicht Express, Prisma, Controller, Services, Validierung an einem Ort.
00:03:40Dann haben wir Auth an einem anderen Ort. Deine Datenbanklogik ist wieder ganz woanders.
00:03:45Vergleiche das nun mit Postgres. Dein Schema definiert die API. Deine Sicherheit ist RLS.
00:03:52Deine Beziehungen existieren bereits in der Datenbank. Anstatt eine Übersetzungsebene um deine Daten zu bauen, geben wir die Daten einfach korrekt frei.
00:04:02Das ist ein großer Unterschied. Vergleiche das mit einem benutzerdefinierten Backend. Da musst du alles selbst schreiben.
00:04:07Das gibt dir Flexibilität, sicher. Aber es bedeutet auch viel mehr Code, den man warten muss.
00:04:13Postgres bleibt einfacher. REST plus Postgres. Die Sicherheit liegt in der Datenbank und ist nicht über Middleware oder Root-Handler verstreut.
00:04:23Dein Wartungsaufwand bleibt gering, weil deine API deinem Schema folgt. Deshalb mögen die Leute es.
00:04:28Fairerweise muss man sagen: Hier kriegen Leute Probleme, denn wenn sich etwas so sauber anfühlt, tun manche so, als löse es alles.
00:04:34Das löst nicht alles, okay? Es gibt immer noch Dinge, auf die man achten muss.
00:04:38Es gibt Kompromisse, und du solltest wissen, worauf du achten musst, bevor du es überhaupt anrührst.
00:04:43Was die Leute hier lieben, ist ziemlich offensichtlich: Es ist schnell aufzubauen. Man kommt sehr fix von der Idee zur funktionierenden API.
00:04:51Und es skaliert auch wirklich gut. Supabase beweist das im Grunde.
00:04:55Sie nutzen das. Aber die Nachteile sind Dinge wie: Massive Nutzung von Row-Level Security erhöht die Datenbanklast.
00:05:02Du musst also genau überlegen, wie du das entwirfst. Komplexe Logik kann dich zu vielen SQL-Funktionen oder Views drängen.
00:05:10Manche Leute lieben das, andere werden es hassen. Solltest du es also benutzen oder ausprobieren?
00:05:15Ja, für die richtigen Projekte. Wenn du Prototypen, MVPs oder irgendetwas baust, das auf Postgres basiert, dann probier es aus, oder?
00:05:23Du wirst schneller vorankommen. Du schreibst weniger Code und erhältst stärkere Sicherheitsstandards, indem du die Regeln in die Datenbank verlagerst.
00:05:32Wenn deine App sehr komplexe Logik hat, willst du vielleicht trotzdem eine dünne Backend-Schicht darüber, eine BFF-Ebene für Sonderfälle.
00:05:40Aber selbst dann kann Postgres die meiste Schwerstarbeit darunter erledigen. Die wichtigste Erkenntnis ist also: Mit Postgres lieferst du schneller, sicherer und wartungsärmer.
00:05:50Deine Datenbank wird zur eigentlichen Quelle der Daten, und deine API ergibt sich daraus, anstatt ein eigenes, separates System zu werden.
00:05:58Wenn dir solche Coding-Tools und Tipps gefallen, abonniere den Better Stack-Kanal. Wir sehen uns im nächsten Video.

Key Takeaway

PostgREST ersetzt bis zu 80 % des herkömmlichen Backend-Codes, indem es Datenbank-Schemas direkt als REST-API mit integrierter RLS-Sicherheit und automatischer OpenAPI-Dokumentation bereitstellt.

Highlights

PostgREST verwandelt ein PostgreSQL-Schema in wenigen Minuten in eine produktionsreife REST-API ohne manuellen Backend-Code.

Das Tool verfügt über mehr als 26.000 Sterne auf GitHub und dient als technologischer Kern für die Infrastruktur von Supabase.

Sicherheitsregeln werden über Row-Level Security (RLS) direkt in der Datenbank definiert, anstatt sie in einer Middleware-Schicht zu verteilen.

Ein Setup besteht aus lediglich drei Docker-Containern für Postgres, PostgREST und eine automatisch generierte Swagger-UI-Dokumentation.

Lesezugriffe liefern valides JSON direkt aus der Datenbank, während Schreibvorgänge via POST-Requests ohne ORM-Verzögerung verarbeitet werden.

Die Nutzung von RLS und komplexen SQL-Funktionen verlagert die Logik in die Datenbank, was die API-Wartung drastisch reduziert.

Timeline

Eliminierung redundanter Backend-Schichten

  • Herkömmliche API-Entwicklung erfordert die mehrfache Definition von Datenstrukturen, Validierungen und Authentifizierung.
  • PostgREST nutzt die Datenbank als API und eliminiert die Notwendigkeit für Routen, Controller oder eine ORM-Ebene.
  • Das System wird bereits im Produktionsmaßstab von Supabase eingesetzt und hat über 26.000 GitHub-Sterne gesammelt.

Die Wartung herkömmlicher APIs ist fehleranfällig, da Spaltenänderungen oft den gesamten Backend-Code brechen. PostgREST reduziert diesen Aufwand, indem es das Schema direkt in Endpunkte übersetzt. Dies verhindert doppelte Logik und minimiert den Zeitaufwand für Routineaufgaben wie Authentifizierung und Datenvalidierung.

Setup und Implementierung mit Docker

  • Das komplette Backend-Setup besteht aus drei Docker-Diensten für Postgres, PostgREST und Swagger UI.
  • Die Einrichtung erfolgt ohne die Installation von Abhängigkeiten oder das manuelle Aufsetzen eines Servers.
  • Tabellen werden mit Standardbefehlen direkt in Postgres erstellt und sofort für die API verfügbar gemacht.

Eine einfache Docker-Compose-Datei verbindet die Datenbank, den API-Motor und das Dokumentations-Tool. In der Demonstration wird eine einfache Todos-Tabelle mit ID, Titel und Status angelegt. Diese direkte Integration spart die Zeit, die normalerweise für das Konfigurieren von Server-Frameworks und Framework-Abhängigkeiten benötigt wird.

Datenbanksicherheit und API-Interaktion

  • Row-Level Security (RLS) definiert Zugriffsregeln direkt in SQL innerhalb der Datenbank.
  • JSON-Daten werden per Curl-Befehl direkt aus Postgres abgerufen, inklusive Filterung, Sortierung und Paginierung.
  • Eine voll interaktive OpenAPI-Dokumentation entsteht automatisch ohne zusätzlichen Konfigurationsaufwand.

Anstatt Sicherheitslogik in der Middleware zu verstecken, wird RLS genutzt, um festzulegen, wer auf welche Zeilen zugreifen darf. Das System unterstützt sofort CRUD-Operationen sowie komplexe Abfragen über die URL. Die automatisch generierte Swagger UI ermöglicht es Entwicklern, Endpunkte sofort zu testen und Schemas einzusehen.

Vergleich mit traditionellen Backends und Kompromisse

  • Traditionelle Stacks wie Express mit Prisma erfordern separate Ebenen für Services, Validierung und Authentifizierung.
  • PostgREST gibt Daten direkt frei, anstatt eine zusätzliche Übersetzungsebene um die Daten zu bauen.
  • Die Verlagerung der Regeln in die Datenbank senkt die Wartungskosten, da die API dem Schema folgt.

Benutzerdefinierte Backends bieten zwar Flexibilität, führen aber zu massivem Wartungscode. PostgREST bleibt einfacher, indem es REST und Postgres direkt verbindet. Die Sicherheit ist nicht über Handler verstreut, sondern im Kern des Systems verankert, was die Konsistenz der Datenregeln über alle Zugriffskanäle hinweg sicherstellt.

Skalierung und Einsatzgebiete

  • Massive Nutzung von Row-Level Security erhöht die Last auf der Datenbank-CPU.
  • Komplexe Logik kann zur verstärkten Nutzung von SQL-Funktionen oder Views führen.
  • PostgREST eignet sich hervorragend für MVPs, Prototypen und Projekte, die auf schnelles Shipping setzen.

Obwohl PostgREST hocheffizient skaliert, wie Supabase beweist, müssen Entwickler die Datenbanklast im Auge behalten. Bei sehr komplexen Anforderungen kann eine zusätzliche dünne Backend-Schicht für Sonderfälle (BFF-Ebene) über PostgREST sinnvoll sein. Die zentrale Erkenntnis bleibt, dass die Datenbank zur primären Quelle der Wahrheit wird, was Entwicklungsprozesse sicherer und wartungsärmer macht.

Community Posts

View all posts