Тело почтового запроса отправлено неправильно - PullRequest
0 голосов
/ 08 апреля 2019

Я пишу запрос POST, который должен отправить некоторую информацию в API REST с помощью elixir, эта информация должна быть доступна в 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 Ответ

1 голос
/ 09 апреля 2019

Вам нужно добавить заголовок 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, что помогло бы вам определить проблему.

...