PostgREST — це автономний веб-сервер, який перетворює будь-яку базу даних PostgreSQL безпосередньо на RESTful API. Написаний на Haskell, він пропонує набагато чистіший та більш стандартизований API. Структурні обмеження та дозволи бази даних визначають кінцеві точки та операції API.
У документації PostgREST його описують як «альтернативу ручному програмуванню CRUD». PostgREST — це проміжне програмне забезпечення з відкритим кодом , а його відкриті API відповідають специфікації OpenAPI (раніше відомій як специфікація Swagger). Згідно з його документацією, він власно керує залежностями між таблицями бази даних, дозволяючи отримувати дані з об'єднання між двома таблицями за допомогою одного REST-запиту.
PostgREST був би дуже швидким з часом відгуку менше однієї секунди для обробки до 2000 запитів на секунду на безкоштовному рівні Heroku.
"Якщо ви звикли до серверів, написаних мовами, що інтерпретуються, готуйтеся бути приємно здивованими роботою PostgREST", - каже команда.
За словами команди, на таку швидкість впливають три фактори.
- По-перше, сервер написаний на Haskell за допомогою сервера HTTP Warp (компільована мова).
- Тоді делегувати якомога більше обчислень у базу даних, включаючи серіалізацію відповідей JSON безпосередньо в SQL, перевірку даних тощо.
- Нарешті, використовувати бібліотеку Hasql для підтримки пулу з'єднань з базами даних, двійковий протокол PostgreSQL і залишається без стану, щоб дозволити горизонтальне масштабування.
PostgREST обробляє автентифікацію (через JSON Web Tokens) та делегує авторизацію інформації про ролі, визначеній у базі даних. Це гарантує, що існує лише одне декларативне джерело достовірності для безпеки.
Під час взаємодії з базою даних сервер приймає особу поточного автентифікованого користувача та під час з'єднання не може робити нічого, чого не може зробити сам користувач. Інші форми автентифікації можна реалізувати за допомогою примітиву JWT.
З іншого боку, коли справа доходить до цілісності даних , PostgREST, замість того, щоб покладатися на ORM (Object Relational Mapper ) та власне імперативне кодування, накладає декларативні обмеження безпосередньо на свою базу даних.
Тому жодна програма не може завдати шкоди вашим даним (включаючи ваш сервер API). PostgREST надає інтерфейс HTTP з різними резервними копіями, щоб уникнути проблем, включаючи застосування запитів PUT. Іншими словами, ORM не задіяний.
Створення нових подань відбувається в SQL із відомими наслідками для продуктивності. Чудовим у PostgREST є те, що адміністратор бази даних може створювати API з нуля без спеціального програмування.
Для деяких PostgREST також є цікавою альтернативою базам даних NoSQL або GraphQL , що надаються через API, якщо їм потрібно підтримувати реляційну модель. Вони шкодують, що це проміжне програмне забезпечення не є стандартним у репозиторіях пакетів основних дистрибутивів Linux.
Як встановити PostgREST на Linux?
Версія 6.0.2 була випущена в серпні минулого року з новими доповненнями та деякими змінами. Цю версію можна отримати у github.
Аналогічно , для тих, хто зацікавлений у встановленні PostgreSQL, поточну версію можна отримати за допомогою терміналу. Просто введіть наступну команду в термінал:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-linux-x64-static.tar.xz
Тепер їм просто потрібно розпакувати пакет за допомогою такої команди:
tar Jxf postgrest-v6.0.2-linux-x64-static.tar.xz
Хоча для особливого випадку тих, хто використовує 64-розрядну версію Ubuntu:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntu.tar.xz
tar Jxf postgrest-v6.0.2-ubuntu.tar.xz
Або для тих, хто використовує 32-розрядну версію Ubuntu
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntui386.tar.xz
tar Jxf postgrest-v6.0.2-ubuntui386.tar.xz
І вони можуть працювати з:
./postgrest --help
Таким же чином готується зображення Docker, яке можна отримати, набравши:
докер витягнути постгрест / постгрест
Зрештою, ви можете знайти більше інформації про те, як його налаштувати, у документації на їхньому вебсайті. Посилання тут.