curl -GET和-X GET

Curl提供了一系列以X为前缀的不同的http方法调用,但也提供了相同的方法。 我已经尝试了两个,我似乎无法找出差异。 有人可以快速向我解释这两个操作有什么不同吗?

默认情况下,您使用curl而不明确说明使用哪种请求方法。 如果你只是像curl http://example.com那样传递一个HTTP URL,它将使用GET。 如果使用-d-F curl将使用POST, -I将引起HEAD, -T将使其成为PUT。

如果由于某种原因,你不满意这些curl为你做的默认select,你可以通过指定-X [WHATEVER]来覆盖这些请求方法。 这样你可以通过执行curl -X DELETE [URL]来发送DELETE。

因此,无论如何,使用GET来执行curl -XGET [URL]是没有意义的。 同样的, curl -X POST -d data [URL]...是毫无意义的curl -X POST -d data [URL]...但是你可以做一个有趣而又有点稀有的请求,它在GET请求中发送一个request-body类似curl -X GET -d data [URL]

深层发掘

curl -GET (使用单个短划线)对于这个目的是错误的。 这相当于指定了-G-E-T选项,这将完全不同。

还有一个curl选项叫 – 不要混淆事项。 它是-G的长格式,用于将使用-d指定的数据转换为GET请求,而不是POST。

(我随后在这里用我自己的答案填充curl常见问题解答,以涵盖此 。)

7.45.0及更高版本中的警告

在curl的现代版本中,当启用详细模式( -v )时,会通知用户这种不必要的-X使用,以使用户意识到。 进一步解释和动机在这篇博客文章 。

-x [你的方法]
x让你重写默认的“获取”

也许我没有跟着你的问题,但它看起来像有一个选项-G只是告诉curl使用GET方法,然后有-X选项,让你做任何你想要的方法。 所以curl -G和curl -XGET将是同样的事情。 我没有看到-GET,看起来curl只是忽略了-G之后的任何东西。