Я хочу написать свой собственный плагин в моем приложении Phoenix. Плагин должен проверять куки и отображать страницу с ошибкой, если куки не существуют. Похоже на ошибку 404. Исходя из логики, могут быть вызваны следующие функции:
put_status
: установить код состояния ответа, я установил 422. put_view
: страница моей ошибкинаходится в templates/error/422.html.eex
, поэтому следует включить ErrorView
. render
: отрисовать HTML-страницу. halt
: прервать соединение.
conn
|> put_status(422)
|> put_view(ErrorView)
|> render("422.html")
|> halt()
put_status
и halt
в Plug.Conn
. put_view
и render
находятся в Phoenix.Controller
. Я знаю, что могу использовать полное пространство имен для вызова этих функций, но это выглядит избыточно. Поэтому я рассматриваю также функции import/use/alias
.
Для Plug.Conn
Книга программирования Phoenix 1.4 использует import Plug.Conn
, некоторые официальные плагины используют alias Plug.Conn
.
Для Phoenix.Controller
Я не нашел ни одного примера, но import
может сработать. Не рекомендуется ли использовать функции контроллера в Plug?
Я рассматриваю как упрощение кода, удобочитаемость и производительность. Кто-нибудь знает, что лучше для этого?
Cheers