postgREST это независимый веб-сервер, который преобразовать любую базу данных PostgreSQL напрямую в RESTful API. Написано на Haskell, предлагает гораздо более чистую и соответствующую стандартам точку доступа. В то время как структурные ограничения и разрешения базы данных определяют конечные точки и операции API.
В документации PostgREST это описывается как «альтернатива ручному программированию CRUD». PostgREST - промежуточное ПО с открытым исходным кодом а API, предоставляемые PostgREST, соответствуют спецификации OpenAPI (ранее известной как спецификация Swagger). Согласно документации, он изначально управляет зависимостями между таблицами вашей базы данных, позволяя с помощью простого запроса REST извлекать данные из соединения между двумя таблицами.
PostgREST будет очень быстрым с временем отклика менее секунды для до 2000 запросов в секунду на уровне бесплатного пользования Heroku.
«Если вы привыкли к серверам, написанным на интерпретируемых языках, приготовьтесь к приятному удивлению производительностью PostgREST», - говорит команда.
По мнению команды, на эту скорость влияют три фактора:.
- Во-первых, сервер написан на Haskell с использованием HTTP-сервера Warp (компилируемый язык).
- Тогда, делегировать базе данных как можно больше вычислений, включая сериализацию ответов JSON непосредственно в SQL, проверку данных и т. д.
- Наконец, использовать библиотеку Hasql для поддержки пула подключений к базе данных, двоичный протокол PostgreSQL, и остается без сохранения состояния, чтобы обеспечить горизонтальное масштабирование.
postgREST обрабатывает аутентификацию (через JSON Web Tokens) и делегирует авторизацию информации о ролях, определенной в базе данных. Это гарантирует, что существует только один декларативный источник истины для безопасности.
При работе с базой данных сервер предполагает личность аутентифицированного в данный момент пользователя и во время соединения он не может делать то, что не может делать сам пользователь. Другие формы аутентификации могут быть созданы в примитиве JWT.
С другой стороны когда дело доходит до целостности данных, ПостгREST вместо того, чтобы полагаться на объектно-реляционный сопоставитель (ORM) и настраиваемая императивная кодировка, эта система накладывает декларативные ограничения непосредственно на вашу базу данных.
Следовательно, ни одно приложение не может нанести вред вашим данным (включая ваш сервер API). PostgREST предоставляет HTTP-интерфейс с различными резервными копиями, чтобы избежать проблем, включая применение запросов PUT. Другими словами, здесь нет ORM.
Создание новых представлений происходит в SQL с известными последствиями для производительности. В PostgREST замечательно то, что администратор базы данных может создавать API с нуля без специального программирования.
Для некоторых PostgREST также является интересной альтернативой базе данных NoSQL или GraphQL. предоставляется изначально в API, если вам нужно поддерживать реляционную модель. К сожалению, это промежуточное программное обеспечение недоступно в качестве стандартного в репозиториях пакетов крупных дистрибутивов Linux.
Как установить PostgREST в Linux?
Версия 6.0.2 была выпущена в августе прошлого года с новыми дополнениями и некоторыми изменениями. Эту версию можно получить с github.
так же, для тех, кто заинтересован в возможности установить PostgREST, они должны знать, что текущую версию можно получить прямо сейчас с помощью терминатора. Только в нем набираем:
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, его можно получить, набрав:
докер тянуть postgrest / postgrest
Наконец, вы можете получить дополнительную информацию о его настройке из документации на его веб-сайте. Ссылка такая.