Параметры URL командной строки CURL

Я пытаюсь отправить запрос DELETE с параметром url с помощью CURL. Я делаю:

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

Однако сервер не видит параметр id = 3. Я попытался использовать какое-то приложение графического интерфейса, и когда я передаю URL как: http://localhost:5000/locations?id=3, он работает. Я действительно предпочел бы использовать CURL, а не это приложение GUI. Может ли кто-нибудь указать, что я делаю неправильно?

Ответ 1

"application/x-www-form-urlencoded" header, почему? Попробуйте:

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

или

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

Ответ 2

Felipsmartins правильный.

Следует отметить, что это связано с тем, что вы не можете использовать параметр -d/- data, если это не запрос POST. Но это возможно, если вы используете опцию -G.

Это означает, что вы можете это сделать:

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

Здесь это немного глупо, но когда вы находитесь в командной строке, и у вас много параметров, это намного сложнее.

Я говорю это, потому что команды cURL обычно довольно длинные, поэтому стоит сделать это на нескольких линиях, избегая разрывов строк.

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

Это, очевидно, намного удобнее, если вы используете zsh. Я имею в виду, когда вам нужно перередактировать предыдущую команду, потому что zsh позволяет вам идти по строкам. (просто говоря)

Надеюсь, что это поможет.

Ответ 3

Если ваш параметр является числом, вы также можете сделать это:

curl -X DELETE localhost:5000/locations/3

Где 3 '- ваш параметр.