post 请求正文未正确发送

Body of post request not sending correctly

我正在写一个 POST 请求,它应该使用长生不老药将一些信息发送到 REST api,这些信息应该可以在 conn.body_params 中访问,但它看起来是空的。

我的代码如下:

conn2 = conn(:post, gameID<>"/guesses", Poison.encode!(%{guess: "p"}))
      |> GameRouter.call()
      assert conn2.status == 201

我的插件也有如下配置:

plug Plug.Parsers, parsers: [:urlencoded, :multipart, :json],  pass: ["*/*"], json_decoder: Poison

真正发送POST请求中的信息应该怎么写?

您需要添加 content-type: application/json header 以便 Plug.Parsers 知道使用 json 解析器。

conn2 =
  conn(:post, gameID <> "/guesses", Poison.encode!(%{guess: "p"}))
  |> put_req_header("content-type", "application/json")
  |> GameRouter.call()

pass: ["*/*"] 告诉 Plug.Parsers 忽略它不知道的所有内容类型。如果删除它,您将得到 Plug.Parsers.UnsupportedMediaTypeError,这将帮助您确定问题。