PhpStorm rest client не отправляет файл во время многочастной отправки - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь протестировать API, чтобы принять составные данные формы. Я пытаюсь использовать клиент PhpStorm rest. Я установил метод Post и путь к своей конечной точке, а затем в теле запроса проверил Text, вставил туда некоторый текст, а также проверил File Upload (multipart / form-data) и поместил путь и имя файла в File to Send текстовое окно.

Когда я нажимаю «Отладка» и запускаю запрос, я получаю только текст. Я не получаю файл загрузки. Если снять флажок с текстом и оставить «Загрузка файла» нажатием, файл будет отправлен правильно.

Мне нужны две вещи. Мне нужно иметь возможность отправлять текст в теле сообщения, а также я должен иметь возможность прикрепить несколько файлов. Другими словами, мне нужно настроить истинный многочастный запрос / запрос данных формы.

Любые предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

ОК - я нашел один способ сделать это. Спасибо, что указал мне правильный путь!

Я не уверен, почему JetBrains создает дамп REST-клиента с графическим интерфейсом. Это, безусловно, имеет больший потенциал, чем создание остальных вызовов вручную с помощью нового метода редактирования, но об этом я и расскажу.

Шаг 1: отредактируйте файл php.ini на веб-сервере (в моем случае это бродячее окно) и установите:

xdebug.remote_autostart = 1

Сохраните файл и перезагрузите ваш веб-сервер и php-fpm (или fastcgi и т. Д.), Если вы используете одну из этих служб.

В этот момент нам больше не нужно беспокоиться о запуске xdebug, который, хотя это можно сделать в рамках вашего вызова покоя **, постоянно вызывал у меня проблемы.

Шаг 2:

Вручную создайте свой звонок и сделайте Content-Type: multipart / form-data. Вот пример (обратите внимание, что перевод строки (возврат) важен!):


POST http://hostname/endpoint/
Accept: */*
Cache-Control: no-cache
Content-Type: multipart/form-data; boundary="abcd"

--abcd
Content-Disposition: form-data; name="json_string"

{"id”:”1234”,”message”:”here are your files”}
--abcd
Content-Disposition: form-data; name="file1"; filename="test.pdf"

< /pathToFile/test.pdf
--abcd
Content-Disposition: form-data; name="file2"; filename="secondfile.txt"

< /pathToFile/secondfile.txt
--abcd--

Шаг 3. Поместите точки останова в свой код и запустите http-вызов из маленькой зеленой стрелки слева от номера строки 1.

Теперь ваша точка останова должна сработать, и вы можете проверить результаты вашего звонка.

** ПРИМЕЧАНИЕ. Если вы хотите попытаться запустить вызов API API xdebug, вы можете сделать это, прикрепив начало сеанса к конечной точке следующим образом:

POST http://host/endpoint/?XDEBUG_SESSION_START=PHPSTORM
Accept: */*
Cache-Control: no-cache
XDEBUG_SESSION=PHPSTORM
Content-Type: multipart/form-data; boundary="abcd"

Однако с этим методом я столкнулся с множеством проблем. Я уверен, что что-то подобное может сработать, но я не мог понять, как это сделать. ; -)

0 голосов
/ 28 июня 2018

В настоящее время это невозможно со встроенным клиентом REST [ 1 & 2 ].

https://youtrack.jetbrains.com/issue/WI-40562 - просмотрите этот тикет (звезда / голосование / комментарий), чтобы получать уведомления о любом прогрессе.


Обратите внимание, что RESTful-клиент теперь считается устаревшим (?), Поскольку JetBrains представила Rest-клиент на основе редактора , который заменит инструмент с графическим интерфейсом и станет тем, кто получит будущие разработки / новые функции. Подробнее здесь:

...