curl -GET和-X GET

时间:2011-12-14 01:01:59

标签: curl http-method

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

4 个答案:

答案 0 :(得分:225)

默认情况下,您使用curl而不明确说明要使用的请求方法。如果您只传入curl http://example.com之类的HTTP网址,则会使用GET。如果您使用-d-F curl将使用POST,-I将导致HEAD,-T将使其成为PUT。

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

因此无论如何都要使用G curl -X GET [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。)

警告

现在版本的curl会在启用详细模式(-v)时通知用户这种不必要且可能有害的-X使用 - 让用户知道。在this blog post中进一步解释和激励。

-G将POST +正文转换为GET +查询

您可以要求curl转换一组-d选项,而不是使用POST在请求正文中发送它们,将它们放在URL的查询字符串的末尾并发出GET,并使用` -G。像这样:

curl -d name=daniel -d grumpy=yes -G https://example.com/

答案 1 :(得分:2)

-X [你的方法]
X允许您覆盖默认的“获取”

**将小写x更正为大写X

答案 2 :(得分:0)

使用-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: */*

答案 3 :(得分:-1)

也许我没有关注你的问题,但看起来有一个选项-G只是告诉curl使用GET方法然后有-X选项,它允许你制作任何你想要的方法。所以卷曲-G和卷曲-XGET也是一回事。我没有看到-GET似乎curl在-G之后忽略了任何东西。