Как новичок как в Elixir, так и в веб-области в целом (без опыта работы с веб-фреймворками), я хотел бы знать, что такое Plug? Насколько я понимаю, Cowboy - это веб-сервер (хотя и на Erlang, а не на Elixir), а Phoenix - это фреймворк для создания веб-приложений, но где тут Plug? Это уровень абстракции между ними или, возможно, система плагинов на том же уровне абстракции, что и Phoenix?
Что такое Elixir Plug?
Ответы (3)
Это слой абстракции между двумя
Да, точно! Plug предназначен для использования в качестве универсального адаптера для различных веб-серверов. В настоящее время мы поддерживаем только Cowboy, но есть работа, чтобы поддержать других.
Plug также определяет, как разные компоненты должны быть подключены друг к другу. Подобно Rack в Ruby, WSGI в Python, Ring в Clojure и т. Д.
Думайте о заглушках как о конвейере инструкций. Назначение plugs - принять соединение, изменить его, а затем вернуть измененное соединение. Вы можете использовать плагины для множества вещей, от прикрепления заголовков к запросам до проверки подлинности пользователя перед рендерингом определенных вещей. В моем текущем проекте я использую заглушки для обработки моих запросов, а также для обработки аутентификации.
На самом деле я написал небольшое подробное описание Plug and Cowboy и того, как они работают под капотом, которое вы можете прочитать здесь, но основное резюме будет следующим:
Cowboy - это фактический веб-сервер, который анализирует и обрабатывает любые входящие и исходящие запросы, написанные на Erlang. Cowboy работает в тандеме с Ranch, который обрабатывает входящие соединения сокетов и управляет протоколом TCP.
Plug - это не более чем спецификация, помогающая создавать конечные точки в Интернете. Он дает вам инструменты для обработки HTTP-запросов, установки кода состояния, отправки ответов и т. Д.
Способ, который помогает мне рассуждать обо всей этой системе, - это думать о Plug and Cowboy как о главном канале Phoenix.