我正在尝试测试API以接受多部分表单数据。我正在尝试使用PhpStorm rest客户端。我将方法设置为Post并设置到端点的路径,然后在请求正文下选中Text,在其中放置一些文本,然后还检查File Upload(multipart / form-data)并将路径和文件名放入要发送的File中文本框。
单击调试并运行请求时,我只会收到文本。我没有上传文件。如果取消选中文本并单击“文件上传”,它将正确发送文件。
我需要两件事。我需要能够在邮件正文中发送文本,并且还需要能够附加多个文件。换句话说,我需要建立一个真正的multipart / form-data发布请求。
任何建议将不胜感激。
答案 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)
https://youtrack.jetbrains.com/issue/WI-40562-观看此票(星号/票/评论)以获取任何进展的通知。
请注意,由于JetBrains引入了基于编辑器的Rest Client ,因此RESTful客户端现在已过时(?),它将取代GUI工具,并将成为将来开发/新功能的工具。 。在此处查看更多信息: