Comment tester le service web en utilisant la ligne de commande curl
Je construis un service web pour une application web, et je voudrais un outil simple pour tester cela pendant que je développe. J'ai essayé quelques plug-ins firefox (affiche, 'REST Client'), et même si ceux-ci fonctionnent bien, j'ai été incapable de télécharger des fichiers avec eux.
Aussi, je préférerais avoir un outil de ligne de commande que je peux utiliser pour écrire une série de tests d'intégration pour ce service web, et que je peux envoyer aux consommateurs de ce service web comme un exemple.
Je le sais curl
peut fonctionner pour cela, mais aimerait quelques exemples, en particulier autour de l'authentification (en utilisant HTTP Basic) et des téléchargements de fichiers.
3 réponses
En plus des réponses existantes, il est souvent souhaité formater la sortie REST (généralement JSON et XML manquent d'indentation). Essayez ceci:
$ curl https://api.twitter.com/1/help/configuration.xml | xmllint --format -
$ curl https://api.twitter.com/1/help/configuration.json | python -mjson.tool
Testé sur Ubuntu 11.0.4 / 11.10.
Un autre problème est le type de contenu souhaité. Twitter utilise .xml
/.json
extension, mais un repos plus idiomatique nécessiterait Accept
header:
$ curl -H "Accept: application/json"
Répondre à ma propre question.
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
Affichage d'un fichier et d'un paramètre supplémentaire
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
À Partir de la documentation sur http://curl.haxx.se/docs/httpscripting.html :
Authentification HTTP
curl --user name:password http://www.example.com
Mettre un fichier sur un serveur HTTP avec curl:
curl --upload-file uploadfile http://www.example.com/receive.cgi
Envoyer des données post avec curl:
curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when.cgi