A avut loc lansarea PostgREST 9.0.0, un server web independent care implementează un wrapper ușor pentru SGBD-ul PostgreSQL, transmițând obiecte dintr-o bază de date existentă în API RESTful. În loc să reflecte datele relaționale în obiecte (ORM), PostgREST creează vizualizări direct în baza de date. Pe partea de bază de date se execută, de asemenea, serializarea răspunsurilor JSON, validarea datelor și autorizarea. Performanța sistemului este suficientă pentru a gestiona până la 2000 de cereri pe secundă într-un tipar tipic. server. Codul proiectului este scris în limbajul Haskell și este distribuit sub licența MIT.
De exemplu, folosind doar mecanismul de privilegii în baza de date, se poate oferi acces la date (tabele, vizualizări și proceduri stocate) prin protocolul HTTP. În acest caz, nu este necesară codificarea acestei tranziții și de obicei este suficientă o singură comandă GRANT pentru ca tabela să devină accesibilă prin API REST. Există opțiunea de a configura accesul prin token (JWT) și de a organiza „multitenancy” prin utilizarea securității dinamice la nivel de rând (Row Level Security).
Din punct de vedere arhitectural, PostgREST încurajează o arhitectură orientată pe date (Data-Oriented Architecture), unde microserviciile nu își păstrează stările singure, ci folosesc un acces unificat la date (Data Access Layer).

Printre modificările din noua versiune:
- În schema de cache a stocării au fost adăugate tabele secționate (partiționate), ceea ce a permis pentru aceste tabele să încorporeze operațiunile UPSERT și INSERT în răspunsul Location, să execute cereri OPTIONS și să implementeze suport pentru OpenAPI.
- Prin RPC POST este permisă apelarea funcțiilor cu un singur parametru nenumit.
- Este permisă apelarea funcțiilor cu un singur parametru JSON fără antetul 'Prefer: params=single-object'.
- Este permisă încărcarea în funcții a datelor de tip bytea, folosind cereri cu 'Content-Type: application/octet-stream'.
- Este permisă încărcarea în funcții a textului, folosind cereri cu 'Content-Type: text/plain'.
- A fost adăugat suport pentru escaparea caracterelor în interiorul parantezelor duble, de exemplu, '?col=in.("Double\"Quote"), ?col=in.("Back\\slash")'.
- A fost oferită posibilitatea filtrării resurselor de nivel 1 bazate pe filtre integrate ('/projects?select=*,clients!inner(*)&clients.id=eq.12').
- În operatorul 'is' este permisă utilizarea valorii 'unknown'.
- A fost asigurată compatibilitatea cu PostgreSQL 14 și a fost întreruptă suportul pentru PostgreSQL 9.5.
Sursa: opennet.ro
