È disponibile il rilascio di PostgREST 9.0.0, un server web autonomo che implementa un'interfaccia leggera per il database PostgreSQL, traducendo oggetti da un database esistente in un'API RESTful. A differenza della riflessione dei dati relazionali in oggetti (ORM), in PostgREST le viste vengono create direttamente nel database. La serializzazione delle risposte JSON, la convalida dei dati e l'autenticazione avvengono sul lato del database. Le prestazioni del sistema sono sufficienti per gestire fino a 2000 richieste al secondo in un tipico server. Il codice del progetto è scritto in Haskell e distribuito sotto licenza MIT.
Ad esempio, utilizzando solo il meccanismo di privilegi nel database, è possibile fornire accesso ai dati (tabelle, viste e procedure memorizzate) tramite il protocollo HTTP. Non è necessaria la codifica di questa traduzione e di solito è sufficiente un'unica istruzione GRANT per rendere una tabella disponibile tramite l'API REST. È possibile configurare l'accesso tramite token (JWT) e organizzare il "multitenancy" utilizzando la sicurezza dinamica a livello di riga (Row Level Security).
L'architettura PostgREST promuove un'architettura orientata ai dati (Data-Oriented Architecture), in cui i microservizi non mantengono stati autonomamente, ma utilizzano un accesso unificato ai dati (Data Access Layer).

Tra le modifiche nella nuova versione:
- Nel caching, sono state aggiunte tabelle partizionate, permettendo di incorporare operazioni UPSERT e INSERT nella risposta Location, eseguire richieste OPTIONS e implementare il supporto per OpenAPI.
- Attraverso RPC POST, è consentito richiamare funzioni con un solo parametro non nominato.
- È consentito richiamare funzioni con un parametro JSON senza l'intestazione "Prefer: params=single-object".
- È possibile caricare dati nelle funzioni di tipo bytea, utilizzando richieste con "Content-Type: application/octet-stream".
- È possibile caricare testo nelle funzioni, utilizzando richieste con "Content-Type: text/plain".
- È stata aggiunta la supporto per l'escape di caratteri all'interno delle doppie parentesi, ad esempio, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash").
- È stata fornita la possibilità di filtrare le risorse di primo livello basate su filtri incorporati ("/projects?select=*,clients!inner(*)&clients.id=eq.12").
- Nell'operatore "is", è consentito utilizzare il valore "unknown".
- È stata garantita la compatibilità con PostgreSQL 14 e la vendita del supporto per PostgreSQL 9.5 è stata interrotta.
Fonte: opennet.ru
