Команда Curl для тестирования API - PullRequest
1 голос
/ 13 июля 2011

Мне нужно протестировать 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 с помощью этих инструментов.

Как мне проверить вышеуказанный API с помощью команды Curl?

Не повезло с этим

curl -X POST --data-binary "image=@test.jpg" "http://myapp.com/api/upload/"

test.jpg находится в текущем каталоге. Я не могу изменить сторонний API для возможности тестирования с другими форматами кодирования.

Ответы [ 2 ]

1 голос
/ 14 июля 2011

CURLOPT_POSTFIELDS с хеш-массивом в PHP соответствует опции командной строки -F. Таким образом, должно быть что-то похожее на:

curl -F image=@profile-pic.jpg http://myapp.com/api/upload/

Если это не совсем то, добавьте '--trace-ascii dump.txt', чтобы получить полную трассировку, и проверьте это внимательно, чтобы увидеть, что не так.

1 голос
/ 13 июля 2011
curl -X POST --data-urlencode 'image@test.jpg' 'http://myapp.com/api/upload'

Это image@, а не image=@.

Предполагается, что данные изображения перед отправкой кодируются в кодировке, что, как я полагаю, делает код PHP.

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