gpt4 book ai didi

phoenix-framework - 在插件模块中使用 Controller 和 Conn 功能的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-05 06:23:35 25 4
gpt4 key购买 nike

我想在我的 phoenix 应用程序中编写自己的插件。该插件用于检查 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_statushaltPlug.Conn 中。 put_viewrenderPhoenix.Controller 中。我知道我可以使用完整的命名空间来调用这些函数,但它看起来是多余的。所以我也在考虑 import/use/alias 函数。

对于Plug.Conn,Programming Phoenix 1.4 Book使用import Plug.Conn,部分官方插件使用alias Plug.Conn

对于 Phoenix.Controller,我还没有找到任何示例,但是 import 可以工作。 Plug中不建议使用Controller函数吗?

我正在考虑代码简化、可读性和性能。有谁知道这方面的最佳做法是什么?

干杯

最佳答案

您可以在您的插件中导入 Phoenix.ControllerPlug.conn 并将该插件导入 Controller 。

defmodule DubberConnectWeb.CheckCookie do
import Plug.Conn
import Phoenix.Controller

def check_cookie(conn, _opts) do
if <check cookie existence condition..> do
conn
|> put_status(422)
|> put_view(DubberConnectWeb.ErrorView)
|> render("422.html")
|> halt()
else
conn
end
end
end

然后在你的 Controller 中,你会做

import DubberConnectWeb.CheckCookie
plug(:check_cookie)

关于phoenix-framework - 在插件模块中使用 Controller 和 Conn 功能的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58211037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com