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

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应用程序。有人能指出我哪里做错了吗?


当前回答

application/x-www-form-urlencoded Content-type头文件不是必需的(好吧,有点取决于情况)。除非请求处理程序期望参数来自表单主体。试试吧:

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

or

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

其他回答

@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允许您逐行执行。(只是说)

application/x-www-form-urlencoded Content-type头文件不是必需的(好吧,有点取决于情况)。除非请求处理程序期望参数来自表单主体。试试吧:

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

or

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