È stato rilasciato PostgREST 9.0.0, un server web autonomo con un'implementazione leggera di un'estensione per il DBMS PostgreSQL, che traduce oggetti da un database esistente in un'API RESTful. Invece di riflettere i dati relazionali in oggetti (ORM), in PostgREST le viste sono create direttamente nel database. Anche la serializzazione delle risposte JSON, la convalida dei dati e l'autorizzazione vengono eseguite a livello di database. Le prestazioni del sistema sono sufficienti per elaborare fino a 2000 richieste al secondo in condizioni tipiche. server. Il codice del progetto è scritto in Haskell e distribuito sotto la licenza MIT.
Ad esempio, utilizzando solo il meccanismo dei privilegi nel database, è possibile fornire accesso ai dati (tabelle, viste e procedure memorizzate) tramite il protocollo HTTP. Non è necessario codificare tale traduzione e di solito è sufficiente un comando GRANT affinché la tabella diventi disponibile tramite l'API REST. È possibile configurare l'accesso tramite token (JWT) e organizzare il "multitenancy" utilizzando la sicurezza dinamica a livello di righe (Row Level Security).
Architettonicamente, PostgREST promuove un'architettura orientata ai dati (Data-Oriented Architecture), in cui i microservizi non mantengono lo stato, ma utilizzano un accesso unificato ai dati (Data Access Layer).

Tra le novità nella nuova versione:
- Sono state aggiunte tabelle partizionate allo schema di memorizzazione nella cache, consentendo di integrare operazioni UPSERT e INSERT nella risposta Location, eseguire richieste OPTIONS e implementare il supporto per OpenAPI.
- Attraverso RPC POST è consentito chiamare funzioni con un unico parametro non nominato.
- È consentito chiamare funzioni con un singolo parametro JSON senza l'intestazione "Prefer: params=single-object".
- È consentito caricare nei parametri delle funzioni dati di tipo bytea, utilizzando richieste con "Content-Type: application/octet-stream".
- È consentito caricare nei parametri delle funzioni testo, utilizzando richieste con "Content-Type: text/plain".
- È stata aggiunta la supporto per il controllo dei caratteri all'interno di virgolette doppie, ad esempio, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash").
- È stata fornita la possibilità di filtrare le risorse di primo livello sulla base di 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 è stata interrotta la supporto per PostgreSQL 9.5.
Fonte: opennet.ru
