邮件正文请求未正确发送

问题描述 投票:0回答:1

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

elixir plug
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,这可以帮助你识别问题。

© www.soinside.com 2019 - 2024. All rights reserved.