Elixir Rescue Phoenix.MissingParamError并为用户返回json
我在Phoenix应用程序中的一个控制器中执行以下操作:Elixir Rescue Phoenix.MissingParamError并为用户返回json,elixir,phoenix-framework,Elixir,Phoenix Framework,我在Phoenix应用程序中的一个控制器中执行以下操作: plug :scrub_params, "account" plug :scrub_params, "studio" def create(conn, %{"account" => account_params, "studio" => studio_params}) do end 当有人没有发送正确的参数时,应用程序将返回Phoenix.MissingParamError错
plug :scrub_params, "account"
plug :scrub_params, "studio"
def create(conn, %{"account" => account_params, "studio" => studio_params}) do
end
当有人没有发送正确的参数时,应用程序将返回Phoenix.MissingParamError错误。我如何拯救它并用json将漂亮的消息返回给用户?您可以创建另一个函数头来处理这种情况。也许是这样的
def create(conn, %{"account" => account_params, "studio" => studio_params}) do
# handle request
end
def create(conn, params) do
# handle missing param
end
也许您可以使用Plug.ErrorHandler。像这样的
defmodule AppRouter do
use Plug.Router
use Plug.ErrorHandler
...
def handle_errors(conn, %{kind: _kind, reason: _reason, stack: _stack}) do
send_resp(conn, conn.status, "Something went wrong")
end
end
我在考虑这个问题,但是我需要对另一个不好的操作重复这个操作…在Phoenix 1.3中,您可以使用action_fallback并将错误处理移动到一个不同的错误控制器。这
Phoenix.MissingParamError
正在抛出我的清除参数
对吗?在这种情况下,添加另一个子句(如现在的顶部答案)将不起作用。