236

我正在尝试DELETE使用 CURL 发送带有 url 参数的请求。我在做:

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

但是,服务器没有看到参数 id = 3。我尝试使用一些 GUI 应用程序,当我将 url 传递为:http://localhost:5000/locations?id=3时,它可以工作。我真的宁愿使用 CURL 而不是这个 GUI 应用程序。谁能指出我做错了什么?

4

2 回答 2

344

application/x-www-form-urlencoded不需要 Content-type 标头(嗯,有点取决于)。除非请求处理程序期望来自表单主体的参数。试试看:

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

或者

curl -X GET "http://localhost:5000/locations?id=3"
于 2012-11-14T00:41:01.620 回答
201

Felipsmartins 是正确的。

值得一提的是,如果这不是 POST 请求,则无法真正使用 -d/--data 选项。但是,如果您使用 -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 可以让您逐行执行。(只是说)

希望能帮助到你。

于 2013-01-11T18:34:39.790 回答