Wydanie PostgREST 9.0.0, nakładki do przekształcania baz danych w API RESTful

Wydano PostgREST 9.0.0, samodzielny serwer WWW, który implementuje lekką nakładkę dla bazy danych PostgreSQL, przekształcającą obiekty z istniejącej bazy danych w RESTful API. Zamiast odzwierciedlać relacyjne dane w obiektach (ORM), w PostgREST widoki są tworzony bezpośrednio w bazie danych. W serwerze baz danych również odbywa się serializacja odpowiedzi JSON, weryfikacja danych oraz autoryzacja. Wydajność systemu jest wystarczająca do obsługi do 2000 zapytań na sekundę przy standardowym obciążeniu. serwerzeKod projektu napisany jest w języku Haskell i jest rozpowszechniany na licencji MIT.

Na przykład, korzystając jedynie z mechanizmu uprawnień w bazie danych, można udzielić dostępu do danych (tabel, widoków i procedur składowych) za pośrednictwem protokołu HTTP. Nie ma potrzeby kodowania takiej translacji, wystarczająco jest jedno polecenie GRANT, aby tabela stała się dostępna przez REST API. Istnieje możliwość skonfigurowania dostępu za pomocą tokenu (JWT) i zorganizowania "multitenancy" poprzez wykorzystanie dynamicznego zabezpieczenia na poziomie wierszy (Row Level Security).

Architektonicznie PostgREST skłania do architektury zorientowanej na dane (Data-Oriented Architecture), w której mikroserwisy nie przechowują stanów samodzielnie, lecz korzystają z jednolitego dostępu do danych (Data Access Layer).

Wydanie PostgREST 9.0.0, nakładki do przekształcania baz danych w API RESTful

Wśród zmian w nowej wersji:

  • Do schematu przechowywania dodano tabele partycjonowane, co umożliwiło wbudowanie operacji UPSERT i INSERT w odpowiedzi Location, realizację zapytań OPTIONS oraz wsparcie dla OpenAPI.
  • Z poziomu RPC POST dozwolone jest wywoływanie funkcji z jednym nieoznaczonym parametrem.
  • Dozwolone jest wywoływanie funkcji z jednym parametrem JSON bez nagłówka "Prefer: params=single-object".
  • Dozwolone jest przesyłanie danych typu bytea do funkcji, wykorzystując zapytania z "Content-Type: application/octet-stream".
  • Dozwolone jest przesyłanie tekstu do funkcji, korzystając z zapytań z "Content-Type: text/plain".
  • Dodano wsparcie dla ucieczki znaków wewnątrz podwójnych nawiasów, na przykład "?col=in.("Double\"Quote"), ?col=in.("Back\\slash").
  • Udostępniono możliwość filtrowania zasobów pierwszego poziomu na podstawie wbudowanych filtrów ("/projects?select=*,clients!inner(*)&clients.id=eq.12").
  • W operatorze "is" dozwolone jest użycie wartości "unknown".
  • Zapewniono zgodność z PostgreSQL 14 i zaprzestano wsparcia dla PostgreSQL 9.5.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster