Как визуализировать ошибки в Elixir Phoenix из представлений - PullRequest
0 голосов
/ 20 сентября 2018

Я строю микросервис (api xml / json) с помощью Phoenix.У меня есть вопрос, как сделать ошибки в эликсире.Поэтому я звоню из контроллера

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

Но после отправки ответа соединение не разрывается, и оно продолжается и пытается отправить следующий ответ.Так что я думаю, что я делаю что-то не так.

PS Я знаю, что могу делать все это с контроллера, но причина, по которой я это делаю, заключается в том, что Phoenix может определять тип содержимого и вызывать правильный метод как DataView.содержит

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

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