phx.gen.json 命令的 Elixir Phoenix 问题

Elixir Phoenix problem with phx.gen.json command

我正在尝试创建一个项目,但我无法通过 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

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

带有以下消息:

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

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

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

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

因此您对 Postman 的 JSON 请求需要是:

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