Я строю микросервис (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