Answers:
默认情况下,您使用curl时不会明确说明要使用的请求方法。如果只是传递一个HTTP URL curl http://example.com
,它将使用GET。如果使用-d
或-F
curl将使用POST,-I
将导致HEAD并-T
使其成为PUT。
如果出于某种原因您对curl为您所做的这些默认选择不满意,则可以通过指定覆盖这些请求方法-X [WHATEVER]
。这样,您可以例如通过发送发送DELETE curl -X DELETE [URL]
。
因此,这样做毫无意义,curl -X GET [URL]
因为无论如何都会使用GET。同样,这也没有意义,curl -X POST -d data [URL]...
但是您可以提出一个有趣且有点罕见的请求,该请求在GET请求中发送带有类似的请求主体curl -X GET -d data [URL]
。
curl -GET
(使用一个破折号)仅是错误的。这相当于指定的-G
,-E
并-T
选择和会做完全不同的事情。
还有一个curl选项--get
可以使任何一个都不混淆。它是-G的长格式,用于将指定的数据-d
转换为GET请求而不是POST。
(我随后在这里使用了自己的答案来填充curl常见问题解答以解决此问题。)
当启用详细模式(-v
)时,现代版本的curl会通知用户有关-X的不必要和潜在有害使用的信息-使用户知道。在此博客文章中进一步进行了解释和说明。
您可以要求curl转换一组-d
选项,而不是使用POST将其发送到请求正文中,而应将它们放在URL的查询字符串的末尾并使用`-G发出GET。像这样:
curl -d name=daniel -d grumpy=yes -G https://example.com/
-X [WHATEVER]
仅使用会更改HTTP请求中使用的请求的方法字符串。通过两个示例(一个带-X [WHATEVER]
一个和一个不带一个)以及每个示例的关联HTTP请求标头,可以更容易理解这一点:
# curl -XPANTS -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.224.86.126) port 80 (#0)
> PANTS / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*
# curl -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.33.50.167) port 80 (#0)
> GET / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*