Как протестировать веб-сервис с помощью командной строки curl - PullRequest
24 голосов
/ 17 ноября 2011

Я создаю веб-сервис для веб-приложения, и мне нужен простой инструмент для проверки этого во время разработки. Я перепробовал некоторые плагины Firefox (Poster, 'REST Client'), и хотя они работают нормально, я не смог загрузить файлы с ними.

Кроме того, я бы предпочел иметь инструмент командной строки, который я могу использовать для простого написания набора интеграционных тестов для этого веб-сервиса и который я могу отправить потребителям этого веб-сервиса в качестве примера.

Я знаю, что curl может работать для этого, но хотелось бы привести несколько примеров, особенно в отношении аутентификации (с использованием HTTP Basic) и загрузки файлов.

Ответы [ 3 ]

23 голосов
/ 17 ноября 2011

Отвечая на мой вопрос.

curl -X GET --basic --user username:password \
     https://www.example.com/mobile/resource

curl -X DELETE --basic --user username:password \
     https://www.example.com/mobile/resource

curl -X PUT --basic --user username:password -d 'param1_name=param1_value' \
     -d 'param2_name=param2_value' https://www.example.com/mobile/resource

POSTing файл и дополнительный параметр

curl -X POST -F 'param_name=@/filepath/filename' \
     -F 'extra_param_name=extra_param_value' --basic --user username:password \
     https://www.example.com/mobile/resource
18 голосов
/ 17 ноября 2011

В дополнение к существующим ответам часто желательно отформатировать вывод REST (обычно в JSON и XML отсутствует отступ).Попробуйте это:

$ curl https://api.twitter.com/1/help/configuration.xml  | xmllint --format -
$ curl https://api.twitter.com/1/help/configuration.json | python -mjson.tool

Протестировано в Ubuntu 11.0.4 / 11.10.

Другая проблема - это требуемый тип контента.Twitter использует расширение .xml / .json, но для более идиоматического REST потребуется заголовок Accept:

$ curl -H "Accept: application/json"
4 голосов
/ 17 ноября 2011

Из документации по http://curl.haxx.se/docs/httpscripting.html:

HTTP-аутентификация

curl --user name:password http://www.example.com 

Поместите файл на HTTP-сервер с помощью curl:

curl --upload-file uploadfile http://www.example.com/receive.cgi

Отправить данные с помощью curl:

curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when.cgi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...