21個curl命令練習
最近,我對人們?nèi)绾螌W習新事物感興趣。我正在讀 Kathy Sierra 的好書《Badass: Making Users Awesome》,它探討了有關(guān)“刻意練習”的想法。這個想法是,你找到一個可以用三節(jié) 45 分鐘課程內(nèi)能夠?qū)W會的小技能,并專注于學習這項小技能。因此,作為一項練習,我嘗試考慮一項能夠在三節(jié) 45 分鐘課程內(nèi)學會的計算機技能。
我認為使用 curl
構(gòu)造 HTTP 請求也許就是這樣的一項技能,所以這里有一些 curl
練習作為實驗!
什么是 curl ?
curl
是用于構(gòu)造 HTTP 請求的命令行工具。我喜歡使用 curl
,因為它能夠很輕松地測試服務器或 API 的行為是否符合預期,但是剛開始接觸它的時候會讓你感到一些困惑!
下面是一幅解釋 curl
常用命令行參數(shù)的漫畫 (在我的 Bite Size Networking 雜志的第 6 頁)。
熟能生巧
對于任何命令行工具,我認為熟練使用是很有幫助的,能夠做到只輸入必要的命令真是太好了。例如,最近我在測試 Gumroad API,我只需要輸入:
curl https://api.gumroad.com/v2/sales \
-d "access_token=<SECRET>" \
-X GET -d "before=2016-09-03"
就能從命令行中得到想要的結(jié)果。
21 個 curl 練習
這些練習是用來理解如何使用 curl
構(gòu)造不同種類的 HTTP 請求的,它們是故意有點重復的,基本上包含了我需要 curl
做的任何事情。
為了簡單起見,我們將對 https://httpbin.org 發(fā)起一系列 HTTP 請求,httpbin 接受 HTTP 請求,然后在響應中回顯你所發(fā)起的 HTTP 請求。
- 請求 https://httpbin.org
- 請求 https://httpbin.org/anything,它將會解析你發(fā)起的請求,并且在響應中回顯。
curl
默認發(fā)起的是 GET 請求 - 向 https://httpbin.org/anything 發(fā)起 GET 請求
- 向 https://httpbin.org/anything 發(fā)起 GET 請求,但是這次需要添加一些查詢參數(shù)(設(shè)置
value=panda
) - 請求 Google 的
robots.txt
文件 (www.google.com/robots.txt) - 向 https://httpbin.org/anything 發(fā)起 GET 請求,并且設(shè)置請求頭為
User-Agent: elephant
- 向 https://httpbin.org/anything 發(fā)起 DELETE 請求
- 請求 https://httpbin.org/anything 并獲取響應頭信息
- 向 https://httpbin.com/anything 發(fā)起請求體為 JSON
{"value": "panda"}
的 POST 請求 - 發(fā)起與上一次相同的 POST 請求,但是這次要把請求頭中的
Content-Type
字段設(shè)置成application/json
(因為 POST 請求需要一個與請求體相匹配的Content-Type
請求頭字段)。查看響應體中的json
字段,對比上一次得到的響應體 - 向 https://httpbin.org/anything 發(fā)起 GET 請求,并且在請求頭中設(shè)置
Accept-Encoding: gzip
(將會發(fā)生什么?為什么會這樣?) - 將一些 JSON 放在文件中,然后向 https://httpbin.org/anything 發(fā)起請求體為該文件的 POST 請求
- 設(shè)置請求頭為
Accept: image/png
并且向 https://httpbin.org/image 發(fā)起請求,將輸出保存為 PNG 文件,然后使用圖片瀏覽器打開。嘗試使用不同的Accept:
字段去請求此 URL - 向 https://httpbin.org/anything 發(fā)起 PUT 請求
- 請求 https://httpbin.org/image/jpeg 并保存為文件,然后使用你的圖片編輯器打開這個文件
- 請求 https://www.twitter.com,你將會得到空的響應。讓
curl
顯示出響應頭信息,并嘗試找出響應內(nèi)容為空的原因 - 向 https://httpbin.org/anything 發(fā)起任意的請求,同時設(shè)置一些無意義的請求頭(例如:
panda: elephant
) - 請求 https://httpbin.org/status/404 和 https://httpbin.org/status/200,然后再次請求它們并且讓 curl 顯示響應頭信息
- 請求 https://httpbin.org/anything 并且設(shè)置用戶名和密碼(使用
-u username:password
) - 設(shè)置
Accept-Language: es-ES
的請求頭用以下載 Twitter 的西班牙語主頁 (https://twitter.com) - 使用
curl
向 Stripe API 發(fā)起請求(請查看 https://stripe.com/docs/development 了解如何使用,他們會給你一個測試用的 API key)。嘗試向 https://httpbin.org/anything 發(fā)起相同的請求