发布请求正文未正确发送

时间:2019-04-08 17:24:18

标签: elixir plug

我正在编写一个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请求中实际发送信息应如何写?

1 个答案:

答案 0 :(得分: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,这将有助于您确定问题所在。