在我的Phoenix JSON API中,当我请求数据库中不存在的对象时,我收到了一个Ecto NoResultsError.
我希望我的JSON API返回null以及404错误.
我该怎么做?
目前我几乎有一个默认生成的html控制器/视图等我已经修改了这样的控制器:
def show(conn, %{"id" => id}) do my_model = Repo.get!(MyModel, id) case get_format(conn) do "json" -> render(conn, my_model: my_model) _ -> render(conn, "show.html", my_model: my_model) end end
以及观点:
defmodule MyProject.MyModelView do use Laired.Web, :view def render("show.json", %{my_model: my_model}) do my_model end end
有关:
在Phoenix Application中为异常设置自定义响应
返回时使用get
而不是get!
处理逻辑nil
:
def show(conn,%{"id" => id}) do case Repo.get(MyModel, id) do nil -> # return null and 404 record -> # do something with record end end