首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >curl -GET和-X GET

curl -GET和-X GET
EN

Stack Overflow用户
提问于 2011-12-14 09:01:59
回答 3查看 215K关注 0票数 153

Curl提供了一系列以X为前缀的不同http方法调用,但也提供了不带X的相同方法。我两个都试过了,但我似乎找不出其中的区别。有人能给我解释一下这两种操作有什么不同吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-14 17:20:44

默认情况下,您使用curl,但没有明确说明要使用哪个请求方法。如果只传入一个HTTP URL,比如curl http://example.com,它将使用GET。如果使用-d-F,curl将使用POST,-I将导致HEAD,而-T将使其成为PUT。

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

因此,做curl -X GET [URL]是没有意义的,因为GET无论如何都会被使用。同样地,做curl -X POST -d data [URL]...也没有意义,但是您可以发出一个有趣的、有点罕见的请求,在GET请求中使用类似curl -X GET -d data [URL]的内容发送一个请求体。

更深层次的挖掘

curl -GET (使用单个破折号)不适用于此目的。这等同于指定-G-E-T选项,这将做一些完全不同的事情。

还有一个名为--get的curl选项,它不会混淆这两个选项。它是-G的长格式,用于将用-d指定的数据转换为GET请求而不是POST。

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

警告

当启用冗余模式(-v)时,curl的现代版本将通知用户这种不必要的和潜在有害的-X使用--让用户意识到。在this blog post中进一步解释和激励。

-G将POST +主体转换为GET +查询

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

代码语言:javascript
复制
curl -d name=daniel -d grumpy=yes -G https://example.com/
票数 305
EN

Stack Overflow用户

发布于 2017-02-01 01:42:23

-X你的方法

X允许您重写默认的'Get‘

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

票数 3
EN

Stack Overflow用户

发布于 2019-10-13 04:36:07

使用-X [WHATEVER]只会更改请求中使用的方法字符串。通过两个示例更容易理解这一点-一个有-X [WHATEVER],一个没有-以及每个示例的相关HTTP请求标头:

代码语言:javascript
复制
# 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: */*
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8498371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档