2011-12-14 82 views
70

Curl提供了一系列以X为前缀的不同的http方法调用,但也提供了相同的方法。我已经尝试了两种方法,但似乎无法找出差异。有人能够快速向我解释这两种操作有何不同?curl -GET和-X GET

回答

157

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

如果无论出于何种原因,您对使用curl所做的默认选择不满意,您可以通过指定-X [WHATEVER]来覆盖这些请求方法。通过这种方式,您可以通过执行curl -X DELETE [URL]来发送DELETE。

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

进一步挖掘

curl -GET(使用单一的破折号)是错误的用于这一目的。这相当于指定了-G,-E-T选项,这将完全不同。

还有一个叫做--get的卷曲选项,不会与两者之间的问题混淆。它是-G的长格式,用于将使用-d指定的数据转换为GET请求,而不是POST。

(我随后使用我自己的答案在这里填充curl FAQ to cover this)在7.45.0

警告后来

在袅袅的现代版本,它会告知用户这是不必要的使用-X当详细模式启用(-v) - 使用户意识到。进一步解释和动机在this blog post

+1

-XGET可能不适用,但它确实使它明确。 – mtyson 2016-02-26 17:43:34

0

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

+2

其实 “卷曲-GET” 等于-G-E和-T。所有长名称卷曲选项都使用两个破折号,如--url或--user。 – 2011-12-14 09:16:41

+0

是的,这是正确的。我没有想到那里。 – masebase 2011-12-14 16:27:27

3

-x [你的方法]
X让你覆盖默认的 '获取'