我正在编写一个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请求中实际发送信息?
您需要添加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
,这可以帮助你识别问题。