什么是 cURL,它與 API 有什么關(guān)系?
cURL即clientURL,代表客戶端 URL,是一個命令行工具,開發(fā)人員使用它來與服務(wù)器進(jìn)行數(shù)據(jù)交互。例如:最常見的就是通過cURL向指定服務(wù)器url地址發(fā)送數(shù)據(jù)。cURL 支持多種不同的協(xié)議,包括 HTTP 和 HTTPS,并且可以在不同的操作系統(tǒng)平臺上執(zhí)行。你只需要有一臺帶網(wǎng)絡(luò)連接、可以運(yùn)行命令行的終端即可運(yùn)行curl命令。
curl 最基本的用法格式是:curl http://example.com. 即curl命令后跟 URL,它將返回example.com的html源代碼。
curl有什么用途?
- 它具有高度的可移植性,可以兼容幾乎所有操作系統(tǒng)和連接設(shè)備。
- 非常方便用來測試終端設(shè)備以檢查它們是否正常工作。
- 它可以提供詳細(xì)的調(diào)試信息,例如提供已發(fā)送/接收的數(shù)據(jù)的詳細(xì)信息。
發(fā)送 API 請求
我們可以使用 curl 發(fā)送 API 請求。每個請求通常由四個主要部分組成:
一個端點(diǎn),它是我們發(fā)送請求的url地址。
-
HTTP方法。最常用的方法是 GET、POST、PUT 和 DELETE。
GET用于從服務(wù)器檢索資源。這可以是文件、數(shù)據(jù)或圖像。
POST用于向服務(wù)器發(fā)送數(shù)據(jù)。
PUT可用于創(chuàng)建或更新資源。這可用于創(chuàng)建或更新數(shù)據(jù)庫中的記錄或文件的內(nèi)容。
DELETE用于刪除資源,例如數(shù)據(jù)庫記錄。
Headers,其中包含有關(guān)請求的元數(shù)據(jù),例如內(nèi)容類型、用戶代理等。
Body,它是消息體,包含我們要發(fā)送的數(shù)據(jù)。通常,與 POST 和 PUT 方法一起使用。
curl 命令選項(xiàng)
有超過兩百種curl選項(xiàng)。您可以通過在命令行執(zhí)行`curl -h來查看幫助文檔。最常用的命令選項(xiàng)包括:
-
-I僅返回 HTTPS Header頭curl --request GET 'https://api.nasa.gov/planetary/apod?api_key=<myapikey>&date=2020-01-01' -I此命令將返回 headers 頭,例如日期、內(nèi)容類型等

-
-v是詳情選項(xiàng)curl --request GET 'https://api.nasa.gov/planetary/apod?api_key=$NASA_API_KEY&date=2020-01-01' -v此命令將顯示運(yùn)行 curl 命令時發(fā)生的所有細(xì)節(jié),包括連接信息、headers頭以及返回的所有數(shù)據(jù)。在這里,我們還獲得了請求返回的圖像的描述以及圖像 url。

-
-o將輸出存儲在文件中curl --request GET 'https://api.nasa.gov/planetary/apod?api_key=$NASA_API_KEY&date=2020-01-01' --output curloutput
將 curl 與其他 CLI 命令結(jié)合使用
您可以將其它命令的輸出用作 curl 命令的輸入,或者反過來。
例如,您可以使用 curl 和 grep 查看網(wǎng)頁是否包含特定文本。
下面是一個使用 curl 請求 NASA API ,并利用python3從請求返回的數(shù)據(jù)中提取圖像鏈接,并將其顯示在預(yù)覽程序中的示例:
curl --request GET "https://api.nasa.gov/planetary/apod?api_key=$NASA_API_KEY&date=2020-01-01" -s | python3 -c "import sys, json; print(json.load(sys.stdin)['url'])" | xargs curl -o NASApicture.jpg && open -a Preview NASApicture.jpg
在這個例子中,我們使用 curl 向 Nasa API 發(fā)出 GET 請求,這將返回 json 數(shù)據(jù),我們在一個 Python 腳本片段中從返回的json數(shù)據(jù)中提取圖像的 url。然后我們使用 curl 命令獲取圖像并使用 Mac 上的 Preview 圖片預(yù)覽程序打開它。

進(jìn)行 API 調(diào)用的其它有用工具
您不必非要使用命令行curl來發(fā)出 API 請求。您也可以使用其它多種不同的工具來進(jìn)行 API 交互,例如 HTTPie、Postman 和 Rest Client。
HTTPie
HTTPie 是一個命令行 HTTP 客戶端,對用戶友好的操作界面是它的一大特點(diǎn)。你可以直接下載其在線版本,非常整潔。
Postman
Postman是一個基于 UI 的客戶端,用于與 API 開發(fā)相關(guān)的所有事情,它可以說是最受歡迎的客戶端之一。
您可以在 Postman 中生成和執(zhí)行curl命令。要生成curl命令,可以輸入請求 的URL地址 和請求參數(shù),然后點(diǎn)擊右側(cè)的代碼選項(xiàng):

將顯示一個框, 選擇curl就可以查看生成的curl命令。

Postman 為您提供了您已構(gòu)建的所有請求的歷史記錄,甚至對它們按照日期進(jìn)行了標(biāo)記。

VS Code 中的Rest Client客戶端
Rest Client for VS Code 可能是我最喜歡的執(zhí)行curl命令的工具之一。它是輕量級的,并且有很好的語法高亮顯示。這是一個非常有用的vs code 插件,方便你在 VS Code 中快速執(zhí)行一些curl請求。
您只需輸入您的 curl 命令,上面就會出現(xiàn)“發(fā)送請求”選項(xiàng)。

單擊發(fā)送請求后,將打開另一個選項(xiàng)卡,其中包含響應(yīng)。
總結(jié)和后續(xù)步驟
本文中介紹了基本curl命令及其最有用的選項(xiàng)。我們還介紹了可幫助您開始使用 cURL 的工具軟件?,F(xiàn)在您可以開始使用 cURL 來測試您的端點(diǎn)并對您的應(yīng)用程序進(jìn)行故障排除。