web-dev-qa-db-fra.com

HTTP POST et GET utilisant cURL sous Linux

J'ai une application serveur écrite en ASP.NET sous Windows qui fournit un service Web.

Comment appeler le service Web sous Linux avec cURL?

338
Randhi Rupesh

* nix fournit une jolie petite commande qui facilite beaucoup notre vie.

GET:

avec JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource

avec XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

POST:

Pour l'enregistrement de données:

curl --data "param1=value1&param2=value2" http://hostname/resource

Pour le téléchargement de fichiers:

curl --form "[email protected]" http://hostname/resource

Message HTTP RESTful:

curl -X POST -d @filename http://hostname/resource

Pour vous connecter à un site (auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

Joli-imprimer les résultats curl:

Pour JSON:

Si vous utilisez npm et nodejs, vous pouvez installer le package json en exécutant la commande suivante:

npm install -g json

Usage:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json

Si vous utilisez pip et python, vous pouvez installer le package pjson en exécutant la commande suivante:

pip install pjson

Usage:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson

Si vous utilisez Python 2.6+, l'outil json est inclus dans.

Usage:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool

Si vous utilisez gem et Ruby, vous pouvez installer le package colorful_json en exécutant la commande suivante:

gem install colorful_json

Usage:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson

Si vous utilisez apt-get (le gestionnaire de paquets aptitude de votre distribution Linux), vous pouvez installer le paquet yajl-tools en exécutant la commande suivante:

Sudo apt-get install yajl-tools

Usage:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource |  json_reformat

Pour XML:

Si vous utilisez * nix avec l'environnement Debian/Gnome, installez libxml2-utils:

Sudo apt-get install libxml2-utils

Usage:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -

ou installez tidy:

Sudo apt-get install tidy

Usage:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -

enregistrement de la réponse curl dans un fichier

curl http://hostname/resource >> /path/to/your/file

ou

curl http://hostname/resource -o /path/to/your/file

Pour une description détaillée de la commande curl, appuyez sur:

man curl

Pour plus de détails sur les options/commutateurs de la commande curl, appuyez sur:

curl -h
661
Amith Koujalgi

Je pense qu'Amith Koujalgi est correct, mais aussi, dans les cas où les réponses du service Web sont en JSON, il serait peut-être plus utile de voir les résultats dans un format JSON vierge au lieu d'une très longue chaîne. Il suffit d'ajouter | grep} | python -mjson.tool à la fin des commandes curl, voici deux exemples:

approche GET avec résultat JSON

curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool 

approche POST avec résultat JSON

curl -X POST  -H "Accept: Application/json" -H "Content-Type: application/json" http://someHostName/someEndpoint -d '{"id":"IDVALUE","name":"Mike"}' | grep }| python -mjson.tool

enter image description here

50
grepit