Rilascio di PostgREST 9.0.0, componenti aggiuntivi per trasformare il database in un'API RESTful

È stato rilasciato PostgREST 9.0.0, un server web che opera separatamente con l'implementazione di un leggero componente aggiuntivo al DBMS PostgreSQL, traducendo gli oggetti da un database esistente in un'API RESTful. Invece di mappare i dati relazionali in oggetti (ORM), PostgREST crea viste direttamente nel database. Il lato database gestisce anche la serializzazione delle risposte JSON, la convalida dei dati e l'autorizzazione. Le prestazioni del sistema sono sufficienti per elaborare fino a 2000 richieste al secondo su un server tipico. Il codice del progetto è scritto in Haskell e distribuito sotto la licenza MIT.

Ad esempio, utilizzando solo il meccanismo dei privilegi del database, è possibile concedere l'accesso ai dati (tabelle, tipi di visualizzazione e procedure memorizzate) su HTTP. In questo caso non è necessario codificare tale traduzione e solitamente è sufficiente un comando GRANT per rendere la tabella disponibile tramite l'API REST. È possibile configurare l'accesso tramite token (JWT) e organizzare la “multitenancy” attraverso l'utilizzo della sicurezza dinamica a livello di riga (Row Level Security).

Dal punto di vista architettonico, PostgREST spinge verso un'architettura orientata ai dati (Data-Oriented Architecture), in cui i microservizi non salvano gli stati stessi, ma utilizzano per questo un unico accesso ai dati (Data Access Layer).

Rilascio di PostgREST 9.0.0, componenti aggiuntivi per trasformare il database in un'API RESTful

Tra le novità della nuova versione:

  • Sono state aggiunte tabelle partizionate alla cache dello schema di archiviazione, il che ha reso possibile per tali tabelle incorporare operazioni UPSERT e INSERT nella risposta Location, eseguire query OPTIONS e implementare il supporto OpenAPI.
  • Tramite RPC POST è consentito chiamare funzioni con un parametro senza nome.
  • È consentito chiamare funzioni con un parametro JSON senza l'intestazione "Prefer: params=single-object".
  • È consentito caricare dati di tipo bytea nelle funzioni utilizzando richieste con "Content-Type: application/octet-stream".
  • Autorizzato a caricare testo nelle funzioni utilizzando query con "Content-Type: text/plain".
  • Aggiunto il supporto per i caratteri di escape all'interno di parentesi doppie, ad esempio "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • È stata fornita la possibilità di filtrare le risorse di primo livello in base ai filtri integrati (“/projects?select=*,clients!inner(*)&clients.id=eq.12”.
  • L'operatore "è" consente il valore "sconosciuto".
  • È stata raggiunta la compatibilità con PostgreSQL 14 e il supporto per PostgreSQL 9.5 è stato interrotto.

Fonte: opennet.ru

Aggiungi un commento