如何从视图中渲染Elixir Phoenix中的错误

时间:2018-09-20 13:26:51

标签: error-handling elixir phoenix-framework

我正在用phoenix构建微服务(api xml / json)。我有一个问题,如何在e剂中呈现错误。 所以我从控制器打来电话

render(conn, :data)

在我的DataView中,我调用方法

get_xml(params[:conn])返回{:ok, "<some data>"} or {:error, 400}

我想呈现正确的错误。如果我愿意

params[:conn]
|> Plug.Conn.put_resp_content_type("application/xml")
|> Plug.Conn.resp(400, "<error data>")
|> Plug.Conn.send_resp

但是在发送响应之后,连接没有断开,并且连接继续并尝试发送下一个响应。所以我想我做错了。

P.S。我知道我可以从控制器执行所有这些操作,但是这样做的原因是Phoenix可以检测内容类型并在DataView包含

时调用正确的方法
 def render("data.xml", params) do
   ...
 end

 def render("data.json", params) do
   ...
 end

0 个答案:

没有答案