我需要测试以下规范的API
URL: http://myapp.com/api/upload/
Method: POST
Parameters:
image: (binary data of image)
returns
a JSON Object
示例php实现来测试api
<?php
$ch = curl_init();
$url = 'http://myapp.com/api/upload/';
$fields = array('image'=>file_get_contents('profile-pic.jpg'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
echo "\n".$json."\n";
?>
我使用RESTClient和Poster扩展来测试其他api,我不知道如何使用这些工具为名为image的参数发送二进制数据。
如何使用Curl命令测试上述api?
这个没有运气
curl -X POST --data-binary "image=@test.jpg" "http://myapp.com/api/upload/"
test.jpg
位于当前目录中。我无法更改第三方API,以便能够使用其他编码格式进行测试。
答案 0 :(得分:1)
curl -X POST --data-urlencode 'image@test.jpg' 'http://myapp.com/api/upload'
它是image@
,而不是image=@
。
这假设图像数据在发送之前是urlencoded,这就是我认为的PHP代码。
答案 1 :(得分:1)
PHP中带有散列数组的CURLOPT_POSTFIELDS对应于命令行-F选项。因此,它应该类似于:
curl -F image=@profile-pic.jpg http://myapp.com/api/upload/
如果这不是确切的事情,请添加'--trace-ascii dump.txt'以获取记录的完整跟踪并仔细检查以查看错误。