2011-12-14 255 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讓你覆蓋默認的 '獲取'