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.

23
demandé sur Mauritz Hansen 2011-11-17 16:38:20

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"
17
répondu Tomasz Nurkiewicz 2011-11-17 12:56:05

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
22
répondu Mauritz Hansen 2012-10-15 09:33:57

À 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
3
répondu alessioalex 2011-11-17 12:41:29