Проект PostgREST развивает RESTful API демон для PostgreSQL

PostgREST — открытый веб-сервер, который позволяет превратить любую базу данных, хранимую в СУБД PostgreSQL, в полноценный RESTful API. Мотивацией к написанию PostgREST стало желание уйти от ручного программирования CRUD, так как это может привести к проблемам: написание бизнес-логики часто дублирует, игнорирует или усложняет структуру базы данных; объектно-реляционное отображение (ORM mapping) не надёжная абстракция, которая приводит к медленному императивному коду и может стать причинной проблем с безопасностью. PostgREST написан на языке Haskell и распространяется по лицензии MIT.

Философия PostgREST в декларативном доступе к данным, без лишних прослоек. PostgREST не использует ORM, все представления создаются прямо в базе данных. Чтобы создавать и поддерживать backend API с PostgREST достаточно иметь в штате администратора СУБД. PostgREST упрощает разработку бэкенда и позволяет объединять, экстрагировать и фильтровать данные через запрос. Вместо написания кода в контроллерах (controllers) можно просто назначить разрешения для объектов в базе данных, а вместо того чтобы писать многочисленные проверки можно напрямую установить ограничения в базе данных.

Несколько иллюстраций возможностей PostgREST:



curl http://localhost:3000/todos

   [
     {
       "id": 1,
       "done": false,
       "task": "finish tutorial 0",
       "due": null
     },
     {
       "id": 2,
       "done": false,
       "task": "pat self on back",
       "due": null
     }]

   curl http://localhost:3000/todos -X POST \
        -H "Content-Type: application/json" \
        -d '{"task": "do bad thing"}'

   {
     "hint": null,
     "details": null,
     "code": "42501",
     "message": "permission denied for relation todos"
   }

   GET /films?select=title,directors(id,last_name) HTTP/1.1

    [
     { "title": "Workers Leaving The Lumière Factory In Lyon",
       "directors": {
         "id": 2,
         "last_name": "Lumière"
       }
     },
     { "title": "The Dickson Experimental Sound Film",
       "directors": {
         "id": 1,
         "last_name": "Dickson"
       }
     },
     { "title": "The Haunted Castle",
       "directors": {
         "id": 3,
         "last_name": "Méliès"
       }
   }]

Для PostgREST есть клиентские библиотеки и расширения, в том числе для OAth, Websockets, Amazon Kinesis. Также доступен starter-kit, который работает в Docker и включает PostgREST, веб-сервер openresty на Lua, pgTAP, RabbitMQ и панель управления.
Запустить приложения на PostgREST можно на платформе Heroku, так же используя Docker. Ещё есть профильная облачная платформа с расширенными функциями, subzero, разработчики которой развивают форк PostgREST+, в котором реализованы агрегатные и оконные функции, а также репликация на чтение.

Источник: http://www.opennet.ru/opennews/art.shtml?num=56064