0

我正在编写一个 POST 请求,该请求应该使用 elixir 将一些信息发送到 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 请求中实际发送信息?

4

1 回答 1

1

您需要添加content-type: application/json标头,以便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,这将有助于您识别问题。

于 2019-04-08T22:30:45.927 回答