Vydanie PostgREST 9.0.0, doplnkov na premenu databázy na RESTful API

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).

Vydanie PostgREST 9.0.0, doplnkov na premenu databázy na RESTful API

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

Pridať komentár