Wydanie PostgREST 9.0.0, dodatków umożliwiających przekształcenie bazy danych w RESTful API

Wydano PostgREST 9.0.0, oddzielnie działający serwer WWW z implementacją lekkiego dodatku do PostgreSQL DBMS, tłumaczącego obiekty z istniejącej bazy danych na RESTful API. Zamiast mapować dane relacyjne na obiekty (ORM), PostgREST tworzy widoki bezpośrednio w bazie danych. Strona bazy danych obsługuje również serializację odpowiedzi JSON, sprawdzanie poprawności danych i autoryzację. Wydajność systemu jest wystarczająca do przetworzenia do 2000 żądań na sekundę na typowym serwerze. Kod projektu napisany jest w Haskell i rozpowszechniany na licencji MIT.

Na przykład, korzystając wyłącznie z mechanizmu uprawnień do bazy danych, można udzielić dostępu do danych (tabel, typów widoków i procedur składowanych) za pośrednictwem protokołu HTTP. W takim przypadku nie ma potrzeby kodowania takiego tłumaczenia i zazwyczaj wystarczy jedno polecenie GRANT, aby udostępnić tabelę poprzez API REST. Istnieje możliwość skonfigurowania dostępu za pomocą tokena (JWT) i zorganizowania „multitenancy” poprzez zastosowanie dynamicznego bezpieczeństwa na poziomie wiersza (Row Level Security).

Architektonicznie PostgREST zmierza w stronę architektury zorientowanej na dane (architektura zorientowana na dane), w której mikrousługi same nie zapisują stanów, ale wykorzystują w tym celu pojedynczy dostęp do danych (warstwa dostępu do danych).

Wydanie PostgREST 9.0.0, dodatków umożliwiających przekształcenie bazy danych w RESTful API

Wśród zmian w nowej wersji:

  • Do pamięci podręcznej schematu przechowywania dodano partycjonowane tabele, co umożliwiło takim tabelom osadzanie operacji UPSERT i INSERT w odpowiedzi lokalizacji, wykonywanie zapytań OPTIONS i implementację obsługi OpenAPI.
  • Poprzez RPC POST można wywoływać funkcje z jednym nienazwanym parametrem.
  • Dopuszczalne jest wywoływanie funkcji z jednym parametrem JSON bez nagłówka „Prefer: params=single-object”.
  • Dopuszczalne jest ładowanie danych typu bajt do funkcji za pomocą żądań z „Typem treści: aplikacja/strumień oktetu”.
  • Zezwolono na ładowanie tekstu do funkcji przy użyciu zapytań z „Typem zawartości: tekst/zwykły”.
  • Dodano obsługę znaków ucieczki umieszczonych w podwójnych nawiasach, na przykład „?col=in.(„Double\quote”), ?col=in.(„Back\\slash”)”.
  • Dodano możliwość filtrowania zasobów pierwszego poziomu w oparciu o wbudowane filtry („/projects?select=*,clients!inner(*)&clients.id=eq.12”.
  • Operator „jest” dopuszcza wartość „nieznaną”.
  • Osiągnięto zgodność z PostgreSQL 14 i zaprzestano obsługi PostgreSQL 9.5.

Źródło: opennet.ru

Dodaj komentarz