pREST - RESTful API для PostgreSQL без головной боли
Представьте: у вас есть PostgreSQL-база, и вам срочно нужно поднять REST API для фронтенда или мобильного приложения. Традиционный путь — писать кучу boilerplate-кода, настраивать ORM, разрабатывать endpoints... А что если я скажу вам, что всё это можно сделать буквально в несколько команд?
Что такое pREST и кому он пригодится
pREST (PostgreSQL REST) — это легковесный сервер на Go, который превращает вашу PostgreSQL-базу в полноценное REST API без написания кода. Он идеально подходит:
- Fullstack-разработчикам, которые хотят быстро прототипировать
- Командам, работающим с legacy PostgreSQL-базами
- Тем, кто устал от рутинной разработки CRUD-эндпоинтов
Интересный факт: изначально авторы хотели развивать PostgREST (аналог на Haskell), но выбрали Go для большей производительности и простоты развертывания.
5 причин попробовать pREST прямо сейчас
-
Мгновенное API — просто укажите подключение к БД, и pREST сгенерирует все необходимые endpoints
-
SQL в URL — фильтрация, сортировка и джойны прямо в запросе:
GET /prest/public/users?name=like.*doe*&_page=1&_page_size=10
-
Высокая производительность — написан на Go, использует пулы соединений и эффективные запросы
-
Гибкость — кастомные роуты, мидлвары и авторизация через JWT
-
Простота развертывания — один бинарный файл или Docker-образ
Как это работает под капотом
pREST выступает прослойкой между клиентом и PostgreSQL:
- Принимает HTTP-запросы
- Преобразует их в оптимальные SQL-запросы
- Возвращает результат в JSON
При этом:
- Поддерживаются все основные HTTP-методы (GET, POST, PUT, PATCH, DELETE)
- Есть пагинация из коробки
- Работают сложные запросы с joins и подзапросами
Реальные кейсы использования
- Быстрый прототип — за 15 минут поднять работающий бэкенд для MVP
- Админка для базы — сразу получить UI через Swagger или Postman
- Микросервис — обернуть legacy базу в современное API
- Мобильный бэкенд — не писать серверную часть с нуля
Личный опыт
В одном из проектов мне нужно было сделать API для существующей PostgreSQL-базы с 50+ таблицами. С pREST мы:
- Развернули рабочее API за вечер
- Сэкономили 2 недели разработки
- Получили автоматическую документацию
При этом производительность была на уровне рукописных запросов — 2000+ RPS на modest hardware.
Как начать использовать
- Установите через Homebrew или Docker:
brew install prestd
# или
docker run -p 3000:3000 -e PREST_PG_HOST=localhost prest/prest
- Настройте подключение к PostgreSQL в конфиге
- Готово! API доступно по http://localhost:3000
Для Heroku есть кнопка одноразового деплоя:
Когда pREST — не лучший выбор
- Для простых приложений с 2-3 таблицами проще использовать Firebase
- Если нужна сложная бизнес-логика на бэкенде
- Когда требуется поддержка других СУБД кроме PostgreSQL
pREST — это swiss army knife для работы с PostgreSQL через REST API. Он не заменит сложный бэкенд, но идеален для:
- Быстрого прототипирования
- Обслуживания legacy-баз
- Сценариев, где важна скорость разработки
Попробуйте — и вы удивитесь, сколько времени можно сэкономить. А если застрянете — в их Discord-комьюнити всегда помогут.
