你真的會(huì)用 curl 嗎?這份全方位教程讓你秒變高手!
在日常開(kāi)發(fā)和運(yùn)維工作中,curl 絕對(duì)是一個(gè)必不可少的工具。無(wú)論是測(cè)試 API 接口、下載文件,還是調(diào)試網(wǎng)絡(luò)請(qǐng)求,curl 都能派上用場(chǎng)。然而,你真的掌握了 curl 的所有強(qiáng)大功能嗎?今天,我們就來(lái)深入探索 curl,看看它有哪些鮮為人知的高級(jí)用法!
1. 基礎(chǔ)用法回顧
在開(kāi)始高階玩法之前,我們先快速回顧 curl 的基礎(chǔ)用法:
(1) 發(fā)送 GET 請(qǐng)求
curl https://api.example.com/data
(2) 發(fā)送 POST 請(qǐng)求
curl -X POST -d "param1=value1?m2=value2" https://api.example.com/post
(3) 下載文件
curl -O https://example.com/file.zip
如果這些你都已經(jīng)熟練掌握,那接下來(lái)的內(nèi)容絕對(duì)會(huì)讓你眼前一亮!
2. curl 的隱藏技能
(1) 以 JSON 格式發(fā)送請(qǐng)求
API 調(diào)試時(shí),往往需要以JSON格式提交數(shù)據(jù),你可以這樣做:
curl -X POST https://api.example.com/data \
-H "Content-Type: application/json" \
-d '{"name":"張三","age":28}'
(2) 自定義請(qǐng)求頭
有些 API 需要特定的請(qǐng)求頭,如 Authorization:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://api.example.com/protected
(3) 保存和發(fā)送 Cookie
如果網(wǎng)站需要登錄,你可以用 curl 先獲取并保存 Cookie:
curl -c cookies.txt -d "username=admin&password=123456" \
https://example.com/login
然后再使用這些 Cookie 訪問(wèn)其他頁(yè)面:
curl -b cookies.txt https://example.com/dashboard
(4) 斷點(diǎn)續(xù)傳下載
遇到大文件下載中斷時(shí),curl 可以幫你斷點(diǎn)續(xù)傳:
curl -C - -O https://example.com/largefile.zip
(5) 測(cè)試 API 響應(yīng)時(shí)間
如果你想測(cè)試一個(gè) API 請(qǐng)求耗時(shí),curl 也能勝任:
curl -w "Total time: %{time_total}s\n" -o /dev/null -s \
https://api.example.com/test
3. curl 在運(yùn)維中的神操作
作為DevOps或SRE,你一定遇到過(guò)這些需求,而 curl 能幫你輕松解決!
(1) 監(jiān)控網(wǎng)站是否正常
用 curl 檢查 HTTP 狀態(tài)碼,結(jié)合 grep 判斷服務(wù)是否正常:
curl -s -o /dev/null -w "%{http_code}" https://example.com | grep 200
(2) 發(fā)送報(bào)警通知
結(jié)合 curl 發(fā)送消息到釘釘或微信告警群:
curl -X POST https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN \
-H "Content-Type: application/json" \
-d '{"msgtype": "text", "text": {"content": "服務(wù)器異常警報(bào)!"}}'
(3) 自動(dòng)化 API 調(diào)試
如果你要批量測(cè)試多個(gè) API 請(qǐng)求,可以用 curl 搭配 xargs:
echo "https://api.example.com/1\nhttps://api.example.com/2" | \
xargs -n 1 curl -s -o /dev/null -w "%{http_code} %U\n"
4. 讓 curl 更加絲滑
(1) 顯示更友好的輸出
curl 默認(rèn)輸出不夠美觀,jq 可以幫你格式化 JSON:
curl -s https://api.example.com/data | jq .
(2) 在 .bashrc 或 .zshrc 里定義快捷別名
如果你經(jīng)常使用 curl 訪問(wèn)特定的 API,不妨加個(gè)別名:
echo 'alias myapi="curl -s https://api.example.com/data | jq ."' >> ~/.bashrc
source ~/.bashrc
以后只需要輸入 myapi 就能快速請(qǐng)求 API!
(3) 使用 --config 組織復(fù)雜請(qǐng)求
如果你有一堆 curl 參數(shù),不想每次都輸入,可以寫(xiě)個(gè)配置文件:
cat > my_request.conf <<EOF
url = "https://api.example.com/data"
header = "Authorization: Bearer YOUR_ACCESS_TOKEN"
header = "Content-Type: application/json"
data = "{\"query\":\"SELECT * FROM users\"}"
request = POST
EOF
然后執(zhí)行:
curl --config my_request.conf
5. 結(jié)語(yǔ)
curl 遠(yuǎn)不止是一個(gè)簡(jiǎn)單的 HTTP 請(qǐng)求工具,它的強(qiáng)大功能可以幫助開(kāi)發(fā)者和運(yùn)維人員更高效地工作。希望今天的內(nèi)容能讓你對(duì) curl 有更深入的了解,下次你寫(xiě) curl 命令時(shí),可以嘗試一些更高級(jí)的技巧!