Bol vydaný PostgREST 9.0.0, samostatne fungujúci webový server s implementáciou ľahkého doplnku do PostgreSQL DBMS, ktorý prekladá objekty z existujúcej databázy do RESTful API. Namiesto mapovania relačných údajov do objektov (ORM), PostgREST vytvára pohľady priamo v databáze. Databázová strana tiež rieši serializáciu odpovedí JSON, validáciu údajov a autorizáciu. Výkon systému je dostatočný na spracovanie až 2000 požiadaviek za sekundu na typickom serveri. Kód projektu je napísaný v Haskell a distribuovaný pod licenciou MIT.
Napríklad pomocou mechanizmu privilégií databázy môžete udeliť prístup k údajom (tabuľkám, typom zobrazenia a uloženým procedúram) cez HTTP. V tomto prípade nie je potrebné kódovať takýto preklad a zvyčajne stačí jeden príkaz GRANT na sprístupnenie tabuľky cez REST API. Je možné konfigurovať prístup podľa tokenu (JWT) a organizovať „multitenanciu“ pomocou dynamického zabezpečenia na úrovni riadkov (Row Level Security).
Architektonicky PostgREST tlačí na dátovo orientovanú architektúru (Data-Oriented Architecture), kde si mikroslužby neukladajú stavy samé, ale využívajú na to jednotný prístup k dátam (Data Access Layer).
Medzi zmeny v novej verzii:
- Do vyrovnávacej pamäte schémy úložného priestoru boli pridané rozdelené tabuľky, čo umožnilo takýmto tabuľkám vložiť operácie UPSERT a INSERT do odpovede na umiestnenie, vykonávať dotazy OPTIONS a implementovať podporu OpenAPI.
- Cez RPC POST je povolené volať funkcie s jedným nepomenovaným parametrom.
- Je povolené volať funkcie s jedným parametrom JSON bez hlavičky „Prefer: params=single-object“.
- Je povolené načítať dáta typu bytea do funkcií pomocou požiadaviek s „Content-Type: application/octet-stream“.
- Povolené načítať text do funkcií pomocou dotazov s "Content-Type: text/plain".
- Pridaná podpora pre escapovanie znakov v dvojitých zátvorkách, napríklad "?col=in.("Double\"Cuote"), ?col=in.("Späť\\lomka")".
- Bola poskytnutá možnosť filtrovania zdrojov prvej úrovne na základe vstavaných filtrov („/projects?select=*,clients!inner(*)&clients.id=eq.12“).
- Operátor „is“ povoľuje hodnotu „unknown“.
- Bola dosiahnutá kompatibilita s PostgreSQL 14 a podpora pre PostgreSQL 9.5 bola ukončená.
Zdroj: opennet.ru