Curl 提供了一系列前缀为 X 的不同 http 方法调用,但也提供了相同的方法。我两种方法都试过了,但我似乎无法找出其中的区别。有人能快速向我解释一下这两种操作有什么不同吗?
默认情况下,使用 curl 时不会显式说明要使用哪个请求方法。如果您只是传递一个像 curl http://example.com这样的 HTTP URL,那么它将使用 GET。如果你使用 -d或 -F旋度将使用 POST,-I将导致一个 HEAD 和 -T将使其成为一个 PUT。
curl http://example.com
-d
-F
-I
-T
如果由于某种原因您不喜欢 curl 为您做的这些默认选择,您可以通过指定 -X [WHATEVER]来覆盖这些请求方法。这种方法可以例如通过执行 curl -X DELETE [URL]来发送 DELETE。
-X [WHATEVER]
curl -X DELETE [URL]
因此,无论如何使用 GET,执行 curl -X GET [URL]都是没有意义的。同样,做 curl -X POST -d data [URL]...也是没有意义的,但是您可以使用类似于 curl -X GET -d data [URL]的请求在 GET 请求中发送一个 request-body,这样的请求很有趣,而且比较少见。
curl -X GET [URL]
curl -X POST -d data [URL]...
curl -X GET -d data [URL]
curl -GET(使用单破折号)在这方面是错误的。这相当于指定了 -G、 -E和 -T选项,它们的作用完全不同。
curl -GET
-G
-E
还有一个名为 --get的 curl 选项,用来避免将事情与任何一个混淆。它是长形式的-G,用于将用 -d指定的数据转换为 GET 请求而不是 POST。
--get
(我随后在这里使用了自己的答案来填充 请参阅常见问题解答。)
当启用详细模式(-v)时,curl 的现代版本将告知用户这种不必要且可能有害的使用 -X 的方法,以使用户了解。在 这篇博文中进一步解释和激励。
-v
你可以要求 curl 转换一组 -d选项,而不是通过 POST 将它们发送到请求主体中,将它们放在 URL 查询字符串的末尾,然后发出一个 GET,使用‘-G,像这样:
curl -d name=daniel -d grumpy=yes -G https://example.com/
X [你的方法] X 允许您覆盖默认的‘ Get’
* * 将小写字母 x更正为大写字母 X
x
X
使用 -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: */*