【问题标题】:Checking the correct params are passed in Phoenix检查正确的参数在 Phoenix 中通过
【发布时间】:2016-06-11 14:31:28
【问题描述】:

我使用 Phoenix 作为基本的 JSON api,但在解决如何检查请求者是否传递了正确的参数时遇到了一些问题。

假设用户发出需要以下正文的发布请求:

{
  "user": {
    "email": "someone@example.com",
    "password": "mangoes"
  }
}

我想检查用户是否在用户对象中传递了电子邮件和密码。目前我在我的控制器动作中做这样的事情:

params[user][email] and params[user][password]

当然有更好的方法来检查参数是否正确。也许与scrub_params 有关?如果是这样,我如何返回漂亮的 JSON 错误消息而不是默认的 Internal server error

感谢任何建议。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    你可以在action本身的参数中查看

      def show(conn, %{"user" => %{"email" => email, "password" => password}} = params) do
        render conn, "show.html", messenger: messenger
      end
    

    有关此方法的示例,请访问offical docs here

    【讨论】:

    • 感谢您的快速回复!这种方法的唯一问题是我需要将完整的参数映射传递给我的身份验证库 login_user 函数,因此单个值不太有用。有什么建议吗?
    • 地图仍在 params 变量中,您可以从控制器操作中的 params 获取任何您想要的值。这是因为我们在模式匹配中使用了变量params%{"user" => %{"email" => email, "password" => password}} = params
    • 啊,真的!感谢您的帮助!
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多