curl
是一個常用的命令行工具,用于發送 HTTP 請求,支持包括 GET、POST、PUT、DELETE 等在內的多種 HTTP 方法。它非常適合用來測試 API、下載文件、與后端服務進行交互等。接下來,我會詳細講解 curl
的基本用法以及常見的應用場景。
📋 基本命令結構
curl [options] [URL]
-
[options]
:用來配置請求的各項參數,如請求方法、頭信息等。 -
[URL]
:請求的目標 URL 地址。
💡 常見用法和選項
1. 發送 GET 請求
默認情況下,curl
會發送一個 GET 請求,你只需提供 URL。
curl https://api.example.com
2. 指定請求方法
curl
可以通過 -X
參數來指定使用的 HTTP 請求方法(如 GET、POST、PUT、DELETE 等)。
curl -X GET https://api.example.com
curl -X POST https://api.example.com
3. 發送 POST 請求
使用 -X POST
來指定 HTTP 請求方法是 POST,并且你可以通過 -d
參數來發送請求體內容。
curl -X POST https://api.example.com -d "key1=value1&key2=value2"
你還可以發送 JSON 格式的數據:
curl -X POST https://api.example.com -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}'
-
-H
用來添加請求頭(Header),在這里設置Content-Type
為application/json
。 -
-d
用來發送數據,這里是 JSON 格式的字符串。
4. 查看響應頭
使用 -I
或 --head
參數查看響應頭(不獲取響應體)。
curl -I https://api.example.com
5. 跟蹤請求過程
使用 -v
或 --verbose
參數,查看請求和響應的詳細信息,包括頭信息、響應狀態碼等。
curl -v https://api.example.com
6. 指定請求頭
使用 -H
參數來添加自定義請求頭。
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com
7. 上傳文件
使用 -F
參數可以上傳文件。
curl -X POST -F "file=@path/to/your/file.jpg" https://api.example.com/upload
8. 設置請求超時
你可以設置請求的超時時間,防止請求卡住過長時間。使用 --max-time
來設置最大請求時間(秒)。
curl --max-time 10 https://api.example.com
9. 保存響應到文件
使用 -o
或 --output
參數將響應內容保存到文件中。
curl -o filename.txt https://api.example.com
如果你想保存到一個動態生成的文件名:
curl -o $(date +%Y%m%d%H%M%S).txt https://api.example.com
10. 禁用 SSL 驗證
如果你在與自簽名證書的服務器交互時遇到 SSL 驗證問題,可以通過 -k
或 --insecure
禁用 SSL 驗證。
curl -k https://api.example.com
🔧 結合實例:實際應用
1. 獲取 JSON 數據
假設你需要從某個 API 獲取 JSON 數據,并格式化顯示:
curl -H "Accept: application/json" https://api.example.com/data | jq .
-
-H "Accept: application/json"
指定期望返回 JSON 格式的數據。 -
| jq .
通過管道將輸出傳遞給jq
(一個命令行 JSON 處理工具)來格式化響應內容。
2. 發送帶有認證信息的請求
假設你需要進行基本認證(用戶名和密碼):
curl -u username:password https://api.example.com
或者使用 Bearer Token 認證:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com
3. 獲取指定頁面內容
如果你只想獲取某個網頁的內容,忽略 HTML 內容的其他部分,可以這樣做:
curl -L https://example.com
-L
參數表示跟蹤重定向(如果目標 URL 有重定向)。
4. 使用代理
你也可以通過代理服務器發送請求:
curl -x http://proxyserver:port https://api.example.com
🧑?💻 總結
-
curl
是一個非常強大的工具,可以用于發送不同類型的 HTTP 請求,獲取和發送數據,查看請求和響應的詳細信息等。 -
它的常見選項包括
-X
(指定請求方法)、-d
(發送數據)、-H
(設置請求頭)、-I
(查看響應頭)、-o
(保存響應到文件)等。 -
curl
支持非常豐富的功能,適用于測試 API、與遠程服務交互、文件上傳下載等場景。