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之后的任何东西。