PhpStorm Rest客户端在多部分提交期间未发送文件

时间:2018-06-28 18:03:28

标签: php laravel web phpstorm xdebug

我正在尝试测试API以接受多部分表单数据。我正在尝试使用PhpStorm rest客户端。我将方法设置为Post并设置到端点的路径,然后在请求正文下选中Text,在其中放置一些文本,然后还检查File Upload(multipart / form-data)并将路径和文件名放入要发送的File中文本框。

单击调试并运行请求时,我只会收到文本。我没有上传文件。如果取消选中文本并单击“文件上传”,它将正确发送文件。

我需要两件事。我需要能够在邮件正文中发送文本,并且还需要能够附加多个文件。换句话说,我需要建立一个真正的multipart / form-data发布请求。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

好的-我想出了一种方法。感谢您为我指明正确的道路!

我不确定JetBrains为什么要转储gui REST客户端。与通过新的edit方法手动创建其余调用相比,它肯定具有更大的潜力,但是我会提出这些。

步骤1:在网络服务器(在我的情况下是一个无聊的盒子)上编辑php.ini文件并设置:

xdebug.remote_autostart = 1

如果使用其中一项服务,请保存文件并重新启动Web服务器和php-fpm(或fastcgi等)。

在这一点上,我们不再需要担心触发xdebug的问题,尽管可以在您的rest调用**中进行此操作,但它不断给我带来麻烦。

第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步:在代码中放置断点,并从第1行左侧的绿色小箭头触发http调用。

现在应该触发您的断点,并且您可以检查呼叫结果。

**注意:如果您确实想尝试让api调用fire xdebug,可以通过将会话启动添加到端点来实现,就像这样:

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

但是,我在使用此方法时遇到了多个问题。我敢肯定,类似的东西可以用,但是我不知道该怎么做。 ;-)

答案 1 :(得分:1)

内置REST客户端[12]当前无法实现。

https://youtrack.jetbrains.com/issue/WI-40562-观看此票(星号/票/评论)以获取任何进展的通知。


请注意,由于JetBrains引入了基于编辑器的Rest Client ,因此RESTful客户端现在已过时(?),它将取代GUI工具,并将成为将来开发/新功能的工具。 。在此处查看更多信息: