web-dev-qa-db-fra.com

Paramètres d'URL de ligne de commande CURL

J'essaie d'envoyer une demande DELETE avec un paramètre d'URL à l'aide de CURL. Je fais:

curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'

Cependant, le serveur ne voit pas le paramètre id = 3. J'ai essayé d'utiliser une application graphique et lorsque je transmets l'URL sous la forme: http://localhost:5000/locations?id=3, cela fonctionne. Je préférerais vraiment utiliser CURL plutôt que cette application graphique. Quelqu'un peut-il s'il vous plaît indiquer ce que je fais mal?

152
darksky

En-tête "application/x-www-form-urlencoded", pourquoi? Essaye le:

curl -X DELETE 'http://localhost:5000/locations?id=3'

ou

curl -X GET 'http://localhost:5000/locations?id=3'
224
felipsmartins

Felipsmartins est correct.

Il est à noter que c'est parce que vous ne pouvez pas vraiment utiliser l'option -d/- data s'il ne s'agit pas d'une requête POST. Mais cela reste possible si vous utilisez l'option -G.

Ce qui signifie que vous pouvez faire ceci:

curl -X DELETE -G 'http://localhost:5000/locations' -d 'id=3'

Ici, c’est un peu idiot, mais quand vous êtes sur la ligne de commande et que vous avez beaucoup de paramètres, c’est beaucoup plus ordonné.

Je dis cela parce que les commandes cURL sont généralement assez longues, il est donc intéressant de le faire sur plus d’une ligne échappant aux sauts de ligne.

curl -X DELETE -G \
'http://localhost:5000/locations' \
-d id=3 \
-d name=Mario \
-d surname=Bros

Ceci est évidemment beaucoup plus confortable si vous utilisez zsh. Je veux dire quand vous devez rééditer la commande précédente parce que zsh vous permet d’aller ligne par ligne. (juste en disant)

J'espère que ça aide.

117
Mig