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

Kate

Administrator
Команда форума
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+, в котором реализованы агрегатные и оконные функции, а также репликация на чтение.

 
Сверху