PostgREST 9.0.0 julkaistiin, erikseen toimiva verkkopalvelin, joka sisältää kevyen lisäosan PostgreSQL DBMS:ään, joka kääntää objektit olemassa olevasta tietokannasta RESTful API:ksi. Sen sijaan, että relaatiodata kartoittaisi objekteiksi (ORM), PostgrREST luo näkymiä suoraan tietokantaan. Tietokantapuoli käsittelee myös JSON-vastausten sarjoittamista, tietojen validointia ja valtuutusta. Järjestelmän suorituskyky riittää käsittelemään jopa 2000 pyyntöä sekunnissa tyypillisellä palvelimella. Projektikoodi on kirjoitettu Haskellilla ja jaettu MIT-lisenssillä.
Esimerkiksi käyttämällä vain tietokannan käyttöoikeusmekanismia, voit myöntää pääsyn tietoihin (taulukot, näkymätyypit ja tallennetut toiminnot) HTTP:n kautta. Tässä tapauksessa tällaista käännöstä ei tarvitse koodata ja yleensä yksi GRANT-komento riittää tuomaan taulukon saataville REST API:n kautta. On mahdollista määrittää pääsy tunnuksella (JWT) ja järjestää "multitenancy" käyttämällä dynaamista rivitason suojausta (Row Level Security).
Arkkitehtonisesti PostgREST pyrkii kohti datalähtöistä arkkitehtuuria (Data-Oriented Architecture), jossa mikropalvelut eivät tallenna itse tiloja, vaan käyttävät tähän yhtä pääsyä tietoihin (Data Access Layer).
Uuden version muutoksista:
- Osioidut taulukot lisättiin tallennusskeeman välimuistiin, mikä mahdollisti sellaisten taulukoiden upstamisen UPSERT- ja INSERT-operaatioiden sijaintivastaukseen, suorittaa OPTIONS-kyselyitä ja ottaa käyttöön OpenAPI-tuen.
- RPC POST:n kautta voidaan kutsua toimintoja yhdellä nimeämättömällä parametrilla.
- On sallittua kutsua toimintoja yhdellä JSON-parametrilla ilman "Prefer: params=single-object" -otsikkoa.
- Bytea-tyypin dataa saa ladata funktioihin käyttämällä pyyntöjä, joissa on "Content-Type: application/octet-stream".
- Sallittu ladata tekstiä funktioihin käyttämällä kyselyitä "Content-Type: text/plain".
- Lisätty tuki kaksoissulkeissa olevien koodinvaihtomerkkien käyttämiselle, esimerkiksi "?col=in.("Kaksois\"Lainaus"), ?col=in.("Takaisin\\vinoviiva")".
- Mahdollisuus suodattaa ensimmäisen tason resursseja sisäänrakennettujen suodattimien perusteella ("/projects?select=*,clients!inner(*)&clients.id=eq.12" on tarjottu.
- "is"-operaattori sallii arvon "tuntematon".
- Yhteensopivuus PostgreSQL 14:n kanssa on saavutettu ja PostgreSQL 9.5:n tuki on lopetettu.
Lähde: opennet.ru