我想在我的凤凰应用程序中编写自己的插件。该插件用于检查 cookie 并在 cookie 不存在时呈现错误页面。类似于 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
,Programming Phoenix 1.4 Book 使用import Plug.Conn
,一些官方插件使用alias Plug.Conn
。
对于Phoenix.Controller
,我还没有找到任何例子,但import
可以工作。不建议在 Plug 中使用 Controller 功能吗?
我正在考虑代码的简化、可读性和性能。有谁知道这方面的最佳做法是什么?
干杯