我正在编写一个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请求中实际发送信息应如何写?
答案 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
,这将有助于您确定问题所在。