Подтвердить что ты не робот

Как протестировать веб-службу с помощью командной строки curl

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

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

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

4b9b3361

Ответ 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