Състоя се релизът на 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).

Сред измененията в новата версия:
- В кеш схемите за съхранение са добавени партиционирани таблици, което позволи за подобни таблици да бъдат вградени операции 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
