web-dev-qa-db-fra.com

Comment faire une demande PUT avec curl?

Comment tester une méthode RESTful PUT (ou DELETE) en utilisant curl?

340
John

Utiliser l'indicateur -X avec le verbe HTTP de votre choix:

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

Cet exemple utilise également l'indicateur -d pour fournir des arguments avec votre demande PUT.

482
theabraham

Vous pouvez utiliser l'application POSTMAN de Chrome Store.

Sur une seule ligne, la commande curl serait:

a) Si vous envoyez des données de formulaire: 

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

b) Si vous envoyez des données brutes au format json:

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

c) Si vous envoyez un fichier avec une demande POST: 

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

Pour les demandes avec d'autres formats ou pour différents clients comme Java, PHP, vous pouvez consulter POSTMAN/comment ci-dessous.

POSTMAN to get the request code

78
Prateek

Un exemple de PUT à la suite du commentaire de Martin C. Martin:

curl -T filename.txt http://www.example.com/dir/

Avec -T (identique à --upload-file), curl utilisera PUT pour HTTP.

20
Tor Klingberg
curl -X PUT -d 'new_value' URL_PATH/key

où,

X - option à utiliser pour la commande de requête

d - option à utiliser pour mettre des données sur une URL distante

URL_PATH - URL distante

new_value - valeur que nous voulons mettre à la clé du serveur

6
kalyani chaudhari

Je suis en retard à ce fil, mais j'avais aussi une exigence similaire. Comme mon script construisait la demande de curl de manière dynamique, je souhaitais une structure similaire de la commande via GET, POST et PUT. 

Voici ce qui fonctionne pour moi

PourPUTrequest:

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

PourPOSTdemande:

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

PourGETrequest:

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
0
sunitkatkar