Как смоделировать отправку данных формы в POST API Call через POSTMAN

1

Я пытаюсь имитировать POST-вызов из мобильного приложения с помощью POSTMAN. Я сделал следующее:

  1. Глагол: POST
  2. Params: добавлено 2 параметра (оба отображаются в URL-адресе)
  3. Заголовок: добавлена пара ключ-значение - Content-Type/application/json
  4. Body: выбран переключатель "form-data" и добавил 2 пары ключ-значение для представления ввода формы - email/[email protected] и age/18

Когда я отправляю запрос и в своем серверном коде (PHP), я печатаю объект $ request, я получаю только параметры (шаг # 2), а не поле формы.

Учтите, что POSTMAN не передает данные формы, или я не смотрю в нужном месте (то есть в объекте $ request).

Я также попытался использовать "raw" вместо "form-data" и передал JSON, но тот же результат.

Я попробовал вызывать тот же API из веб-приложения, я получаю правильные значения данных формы в объекте $ request.

Любая помощь для решения проблемы, с которой я столкнулась, очень ценится. Я провел почти целый день, проходя через документ POSTMAN, и искал в Google, но не сильно продвинулся.

  • 0
    Тип содержимого application / json и размещение формы являются эксклюзивными, если вы хотите опубликовать данные формы, тип содержимого должен быть application / x-www-form-urlencoded
Теги:
forms
laravel-5
postman

1 ответ

3

Глагол: POST

Верный

Params: добавлено 2 параметра (оба отображаются в URL-адресе)

Вы, вероятно, не должны этого делать

Если вы делаете запрос POST, поместите их в "данные формы" на вкладке body. (Возможно, запрос POST может содержать данные строки запроса, но это необычно).

Заголовок: добавлена пара ключ-значение - Content-Type/application/json

Определенно не делайте этого.

Вы отправляете данные, закодированные в форму, а не JSON.

Postman автоматически установит правильный тип контента, если вы его не отмените.

Body: выбран переключатель "form-data" и добавил 2 пары ключ-значение для представления ввода формы - email/[email protected] и age/18

Наверное, правильно. Кодировка по умолчанию для форм - это x-www-form-urlencoded, но PHP может обрабатывать оба.

Я получаю только параметры (шаг № 2), а не поле формы.

PHP не имеет встроенной поддержки для разбора HTTP-запросов с помощью тела сообщения JSON, поэтому он видит ваше утверждение о том, что вы отправляете JSON и ничего не предпринимаете.

Если он поддерживает JSON для этого, тогда он попытается проанализировать данные, закодированные в форме, как JSON и сбой.

Я также попытался использовать "raw" вместо "form-data" и передал JSON, но тот же результат.

Вы должны вручную декодировать JSON закодированные тела запроса.

  • 0
    Привет Квентин, спасибо за быстрый ответ. Я удалил заголовок и параметры, как вы предложили, и отправил запрос. Теперь я получаю пустой массив, когда я делаю $request->all() . Раньше так же вернулось бы 2 параметра.
  • 0
    Попробовал приведенный ниже код на стороне сервера при передаче данных как raw & x-www-form-urlencode $inputJSON = file_get_contents('php://input'); $input= json_decode( $inputJSON, TRUE ); dd(json_encode($input)); Вывод "" Не уверен, что я не так делаю?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню