首页 > 解决方案 > phx.gen.json 命令的 Elixir Phoenix 问题

问题描述

我正在尝试创建一个项目,但我无法通过 API 创建对象,我只使用命令来创建 Phoenix 项目,但它仍然无法正常工作。

重现步骤:

我正在使用以下命令

mix phx.new project --app project --module TodoList --no-html --no-webpack
cd project
mix ecto.create
mix phx.gen.json Accounts User users first_name:string last_name:string

然后我在我的router.ex文件中添加资源,如下所示:

  scope "/api", TodoListWeb do
    pipe_through :api

    resources "/users", UserController
  end

最后:

mix ecto.migrate
mix phx.server

之后服务器启动没有任何问题,到目前为止一切都很好,但是当我http://localhost:4000/api/users使用 Postman 发出 POST 请求时,我得到一个400状态码。

带有以下消息:

在此处输入图像描述

我可以在控制台中看到请求的输入:

%{"first_name" => "Jeff", "last_name" => "Doe"}

标签: phoenix-frameworkelixir

解决方案


我认为您需要在请求中指定一个最外层的“用户”键,如:

%{"user" => %{"first_name" => "Jeff", "last_name" => "Doe"}}

因此,您对 Postman 的 JSON 请求必须是:

{
    "user": {
        "first_name": "Jeff",
        "last_name": "Doe"
    }
}

推荐阅读