Реліз PostgREST 9.0.0, надбудови для перетворення БД на API RESTful

Відбувся реліз PostgREST 9.0.0, що окремо працює веб-сервера з реалізацією легкої надбудови до СУБД PostgreSQL, що транслює об'єкти з існуючої бази даних RESTful API. Замість відображення реляційних даних в об'єкти (ORM) у PostgREST уявлення створюються прямо у базі даних. На стороні БД також виконується серіалізація відповідей JSON, перевірка даних та авторизація. Продуктивності системи достатньо для обробки до 2000 запитів на секунду на типовому сервері. Код проекту написаний мовою Haskell та поширюється за ліцензією MIT.

Наприклад, використовуючи лише механізм привілеїв у базі даних, можна надати доступ до даних (таблиць, видів уявлень та процедур, що зберігаються) за протоколом HTTP. При цьому немає необхідності кодувати таку трансляцію і зазвичай достатньо однієї команди GRANT, щоб таблиця стала доступною за REST API. Є можливість налаштувати доступ по токену (JWT) та організувати «multitenancy» через використання динамічної безпеки на рівні рядків (Row Level Security).

Архітектурно PostgREST підштовхує до орієнтованої архітектури (Data-Oriented Architecture), де мікросервіси не зберігають стану самі, а використовують для цього єдиним доступом до даних (Data Access Layer).

Реліз PostgREST 9.0.0, надбудови для перетворення БД на API RESTful

Серед змін у новій версії:

  • У кеш схеми зберігання додані секційовані (партиковані) таблиці, що дозволило для подібних таблиць вбудовувати операції UPSERT та INSERT у відповідь Location, виконувати запити OPTIONS та реалізувати підтримку OpenAPI.
  • Через RPC POST можна викликати функції з одним неназваним параметром.
  • Дозволено викликати функції з одним JSON-параметром без заголовка Prefer: params=single-object.
  • Дозволено завантажувати у функції дані з типом bytea, використовуючи запити з Content-Type: application/octet-stream.
  • Дозволено завантажувати у функції текст, використовуючи запити з Content-Type: text/plain.
  • Додана підтримка екранування символів усередині подвійних дужок, наприклад, "col=in.("Double"Quote"), "col=in.("Back\slash")".
  • Надано можливість фільтрації ресурсів першого рівня на основі вбудованих фільтрів («/projects?select=*,clients!inner(*)&clients.id=eq.12»).
  • В операторі "is" дозволено використання значення "unknown".
  • Забезпечено сумісність з PostgreSQL 14 та припинено підтримку PostgreSQL 9.5.

Джерело: opennet.ru

Додати коментар або відгук