Eldono de PostgREST 9.0.0, aldonaĵoj por igi la datumbazon en RESTful API

PostgREST 9.0.0 estis publikigita, aparte funkciiganta retservilo kun la efektivigo de malpeza aldonaĵo al la PostgreSQL DBMS, tradukante objektojn de ekzistanta datumbazo en RESTful API. Anstataŭ mapado de interrilataj datumoj en objektojn (ORMoj), PostgREST kreas vidojn rekte en la datumbazo. La datumbaza flanko ankaŭ pritraktas seriigon de JSON-respondoj, datumvalidigon kaj rajtigon. La sistema rendimento sufiĉas por procesi ĝis 2000 petojn sekundo sur tipa servilo. La projektkodo estas skribita en Haskell kaj distribuita sub la MIT-licenco.

Ekzemple, uzante nur la datumbazan privilegian mekanismon, vi povas doni aliron al datumoj (tabeloj, vidotipoj kaj konservitaj proceduroj) per HTTP. En ĉi tiu kazo, ne necesas kodi tian tradukon kaj kutime unu GRANT-komando sufiĉas por disponigi la tabelon per la REST-API. Eblas agordi aliron per ĵetono (JWT) kaj organizi "multitenancy" per la uzo de dinamika vicnivela sekureco (Row Level Security).

Arkitekture, PostgREST puŝas al datum-orientita arkitekturo (Data-Oriented Architecture), kie mikroservoj ne savas ŝtatojn mem, sed uzas ununuran aliron al datumoj (Data Access Layer) por tio.

Eldono de PostgREST 9.0.0, aldonaĵoj por igi la datumbazon en RESTful API

Inter la ŝanĝoj en la nova versio:

  • Dispartitaj tabloj estis aldonitaj al la stokadskemo-kaŝmemoro, kio ebligis ke tiaj tabloj enkonstruu UPSERT- kaj INSERT-operaciojn en la Loka respondo, ekzekuti OPTIONS-demandojn kaj efektivigi OpenAPI-subtenon.
  • Per RPC POST estas permesite voki funkciojn kun unu nenomita parametro.
  • Estas permesite voki funkciojn kun unu JSON-parametro sen la kaplinio "Prefer: params=single-object".
  • Estas permesite ŝargi datumojn de tipo bytea en funkciojn uzante petojn kun "Enhavo-Tipo: aplikaĵo/okteto-fluo".
  • Permesita ŝargi tekston en funkciojn uzante demandojn kun "Enhavo-Tipo: teksto/plain".
  • Aldonita subteno por eskapi signojn ene de duoblaj krampoj, ekzemple, "?col=in.("Duobla\"Citaĵo"), ?col=in.("Reen\\slash")".
  • La kapablo filtri unuanivelajn rimedojn bazitajn sur enkonstruitaj filtriloj ("/projects?select=*,clients!inner(*)&clients.id=eq.12" estis provizita.
  • La operatoro "estas" permesas la valoron "nekonata".
  • Kongrueco kun PostgreSQL 14 estis atingita kaj subteno por PostgreSQL 9.5 estis nuligita.

fonto: opennet.ru

Aldoni komenton