Utgivelsen av PostgREST 9.0.0 fant sted, en separat opererende webserver med implementering av et lett tillegg til PostgreSQL DBMS, som oversetter objekter fra en eksisterende database til en RESTful API. I stedet for å kartlegge relasjonsdata til objekter (ORM), oppretter PostgREST visninger direkte i databasen. Databasesiden håndterer også serialisering av JSON-svar, datavalidering og autorisasjon. Systemytelsen er tilstrekkelig til å behandle opptil 2000 forespørsler per sekund på en typisk server. Prosjektkoden er skrevet i Haskell og distribuert under MIT-lisensen.
Hvis du for eksempel bare bruker databaserettighetsmekanismen, kan du gi tilgang til data (tabeller, visningstyper og lagrede prosedyrer) over HTTP. I dette tilfellet er det ikke nødvendig å kode en slik oversettelse, og vanligvis er én GRANT-kommando nok til å gjøre tabellen tilgjengelig via REST API. Det er mulig å konfigurere tilgang med token (JWT) og organisere "multitenancy" ved bruk av dynamisk radnivåsikkerhet (Row Level Security).
Arkitektonisk presser PostgREST mot en dataorientert arkitektur (Data-Oriented Architecture), hvor mikrotjenester ikke lagrer tilstander selv, men bruker en enkelt tilgang til data (Data Access Layer) til dette.
Blant endringene i den nye versjonen:
- Partisjonerte tabeller ble lagt til lagringsskjemabufferen, noe som gjorde det mulig for slike tabeller å bygge inn UPSERT- og INSERT-operasjoner i Location-responsen, utføre OPTIONS-spørringer og implementere OpenAPI-støtte.
- Via RPC POST er det tillatt å kalle opp funksjoner med én navngitt parameter.
- Det er tillatt å kalle opp funksjoner med én JSON-parameter uten "Prefer: params=single-object"-overskriften.
- Det er tillatt å laste data av typen bytea inn i funksjoner ved å bruke spørringer med "Content-Type: application/octet-stream".
- Tillatt å laste inn tekst i funksjoner ved å bruke spørringer med "Innholdstype: tekst/vanlig".
- Lagt til støtte for escape-tegn innenfor doble parenteser, for eksempel "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
- Muligheten til å filtrere førstenivåressurser basert på innebygde filtre ("/projects?select=*,clients!inner(*)&clients.id=eq.12" er gitt.
- Operatoren "er" tillater verdien "ukjent".
- Kompatibilitet med PostgreSQL 14 er oppnådd og støtte for PostgreSQL 9.5 er avviklet.
Kilde: opennet.ru