Издаване на PostgREST 9.0.0, добавки за превръщане на базата данни в RESTful API

Беше пуснат 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, добавки за превръщане на базата данни в RESTful API

Сред промените в новата версия:

  • Разделените таблици бяха добавени към кеша на схемата за съхранение, което направи възможно такива таблици да вграждат UPSERT и INSERT операции в отговора на местоположението, да изпълняват OPTIONS заявки и да прилагат поддръжка на OpenAPI.
  • Чрез RPC POST е позволено да се извикват функции с един неназован параметър.
  • Разрешено е да се извикват функции с един JSON параметър без заглавката „Предпочитам: params=single-object“.
  • Разрешено е да се зареждат данни от тип bytea във функции, използвайки заявки с „Content-Type: application/octet-stream“.
  • Разрешено е зареждане на текст във функции чрез заявки с „Content-Type: text/plain“.
  • Добавена е поддръжка за екраниране на символи в двойни скоби, например "?col=in.("Двойна\"цитат"), ?col=in.("Назад\\наклонена черта")".
  • Предоставена е възможност за филтриране на ресурси от първо ниво въз основа на вградени филтри (“/projects?select=*,clients!inner(*)&clients.id=eq.12”).
  • Операторът "is" позволява стойността "unknown".
  • Постигната е съвместимост с PostgreSQL 14 и поддръжката за PostgreSQL 9.5 е преустановена.

Източник: opennet.ru

Добавяне на нов коментар