Как протестировать веб-службу с помощью командной строки curl
Я создаю веб-службу для веб-приложения, и мне бы хотелось, чтобы простой инструмент проверял это, когда я разрабатываю. Я пробовал некоторые плагины firefox (Poster, "REST Client" ), и даже несмотря на то, что они работают нормально, я не смог загрузить с ними файлы.
Кроме того, я бы предпочел использовать инструмент командной строки, который я могу использовать, чтобы легко написать набор тестов интеграции для этой веб-службы и что я могу отправить их пользователям этой веб-службы в качестве примера.
Я знаю, что curl
может работать для этого, но хотел бы несколько примеров, особенно вокруг проверки подлинности (с использованием HTTP Basic) и загрузки файлов.
Ответы
Ответ 1
В дополнение к существующим ответам часто желательно форматировать вывод 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"
Ответ 2
Отвечая на мой собственный вопрос.
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 '[email protected]/filepath/filename' \
-F 'extra_param_name=extra_param_value' --basic --user username:password \
https://www.example.com/mobile/resource
Ответ 3
Из документации по 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