帶選項的 cURL 命令

使用不帶選項的 cURL 命令會顯示文件的原始內容。但如果需要將文件下載到服務器,可以使用帶有 -O 選項的 cURL 命令。

cURL -O https://raw.githubusercontent.com/devans24/books/main/books_data.json

運行此命令后,會看到文件成功下載的確認信息。

curl 命令 linux,書籍

一般情況下,運行 ls 命令來仔細檢查文件是否列在目錄中。

如何在 Linux 中使用 cURL 命令

了解了 cURL 命令及其語法后,接下來探討它是如何工作的。

cURL 預裝在 Windows 和 macOS 系統中,也可以從 cURL 網站下載該軟件包。

cURL 命令接收用于傳輸數據或接收數據的 URL,并可以通過選項來自定義請求的不同用途。

在本節中,將使用 JSONPlaceholder Fake API 來演示如何通過 cURL 發出各種請求。此模擬 API 提供了多種示例路徑,用于不同的請求操作。

從數據源請求數據

使用 cURL 的 GET 方法,可以快速從源或 API 請求數據。以下是發出 GET 請求的簡單 cURL 命令:

cURL https://jsonplaceholder.typicode.com/todos/1

如果不傳遞任何標志或選項,cURL 命令默認向指定 URL 發出 GET 請求。該命令返回從 API 發送的響應主體,在終端中顯示如下:

{ “userId”: 1, “id”: 1, “title”: “delectus aut autem”, “completed”: false }

這與在 Postman 等平臺上的結果類似,如下所示:

此外,還可以在 cURL 命令中包含選項和值,以使用不同的請求方法。例如,可以將 -X(連字符和大寫 X)選項與請求方法一起使用。-X 選項是 --request 的別名。

命令示例如下:

cURL -X [METHOD] [URL]

上面第一個 cURL 命令中的默認GET方法與以下內容相同:

cURL -X GET https://jsonplaceholder.typicode.com/todos/1

發送數據到數據源

使用 POST 方法和 cURL 命令,可以通過 API 將數據傳輸到服務器。API 處理數據后,執行諸如將其保存到數據庫等操作,并返回指示請求狀態的響應。

要向 URL 發出 POST 請求,請使用 -X 選項,并將 POST 方法作為值傳遞。同時,可以使用另一個選項 -d(連字符和小寫 d),這是 --data 的別名,來在請求中添加數據。

在發送數據時,可以使用兩種常見的數據格式:application/x-www-form-urlencodedapplication/json。接下來將介紹這兩種方法。

application/x-www-form-urlencoded

如果未指定所需的格式,cURL 默認使用 application/x-www-form-urlencoded。以下是使用此格式和 JSON Fake API 的示例:

cURL -X POST -d "name=cURL&type=article" https://jsonplaceholder.typicode.com/posts

此命令向 https://jsonplaceholder.typicode.com/posts 發出 POST 請求,并傳遞 URL 編碼的數據 "name=cURL&type=article",其中 "name" 鍵的值為 "cURL""type" 鍵的值為 "article"

對于向 JSON Fake API 發出的 POST 請求,響應正文是一個包含 ID 屬性的數據對象。

輸入命令后,API 的響應主體如下:

{ "name": "cURL", "type": "article", "id": 101 }

application/json

使用 cURL,發送字符串化的 JSON 對象可以通過以下方式實現:

cURL -X POST -d '{"name": "cURL", "type": "article"}' https://jsonplaceholder.typicode.com/posts

此請求中的數據以 application/x-www-form-urlencoded 格式發送,因此 API 可能不會按預期解釋數據。結果如下:

{ “{\”name\”: \”cURL\”, \”type\”: \”article\”}”: “”, “id”: 101 }

為了確保數據以 JSON 格式發送,必須使用 -H(帶大寫 H 的連字符)選項(--header 的別名)并傳遞 Content-Type 標頭,如下所示:

cURL -X POST -d '{"name": "cURL", "type": "article"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts

現在,API 將返回正確的響應主體:

{ “name”: “cURL”, “type”: “article”, “id”: 101 }

另外,可以通過指定 JSON 文件來避免在終端中輸入 JSON 字符串。例如,假設有一個名為 data.json 的文件,內容如下:

{ “name”: “cURL”, “type”: “article” }

可以運行以下 cURL 命令,從文件中讀取 JSON 數據并發送請求:

cURL -X POST -d @data.json -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts

這樣,將獲得與上述相同的結果:

{ “name”: “cURL”, “type”: “article”, “id”: 101 }

刪除服務器上的資源

使用 DELETE 方法和 cURL 命令,可以向 API 發送刪除請求。URL 和數據的具體內容取決于 API 的配置。

對于 JSON Fake API,執行刪除請求的命令如下:

cURL -X DELETE https://jsonplaceholder.typicode.com/posts/1

響應主體將是一個空對象:

{}

使用 API 更新現有資源的最佳方法

使用 PUT 方法和 cURL 命令,可以向 API 發出更新請求以修改現有資源。對于 JSON Fake API,可以指定資源路徑和 PUT 方法,并傳遞數據來更新資源。

可以使用任何所需的數據格式,以下示例使用 application/json 格式:

cURL -X PUT -d '{"name": "json", "type": "post"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1

必須在標頭中指定數據格式,以便 API 能夠正確解釋請求。

上述命令將返回以下響應主體:

{ “name”: “json”, “type”: “post”, “id”: 1 }

cURL 協議和格式

默認情況下,cURL 使用 HTTP 協議。以下是 cURL 支持的一些其他協議和格式:

文件傳輸協議 (FTP)

文件傳輸協議 (FTP) 用于在服務器和客戶端之間傳輸文件。將此協議與 cURL 結合使用時,可以上傳文件,例如:

cURL -T [selected-file] "ftp://[target-destination]"

cURL 是標準 FTP 客戶端的一個很好的替代方案。

簡單郵件傳輸協議 (SMTP)

簡單郵件傳輸協議 (SMTP) 用于將數據發送到 SMTP 服務器。該數據包括要發送的文本、發件人和收件人。示例命令如下:

cURL smtp://[smtp-server] --mail-from [sender] --mail-rcpt \ [receiver] --upload-file [mail-content-file]

字典網絡協議 (DICT)

字典網絡協議 (DICT) 提供對字典內容的訪問。要與 cURL 一起使用該協議,運行以下命令:

cURL "dict://dict.org/d:hello"

該命令將返回結果,顯示所選字典中“hello”的定義。

地鼠 (Gopher)

Gopher 協議用于在終端中搜索、分發和檢索來自 Web 的文檔。要使用 cURL 通過 Gopher 協議訪問資源,可以使用以下命令:

cURL gopher:/serveraddress.com/resource/selector

超文本傳輸安全協議 (HTTPS)

HTTPS 是一種流行的協議,在命令行中使用 cURL 可以簡化數據檢索、API 交互、自動執行測試等任務。由于 HTTP 的安全加密連接,HTTPS 確保了跨服務器傳輸的數據的機密性和完整性。要使用 HTTPS 協議訪問網站,運行以下命令:

cURL https://www.example.com

互聯網消息協議 (IMAP)

IMAP 協議與 cURL 配合使用可以實現郵件服務器交互、檢索和閱讀電子郵件以及郵箱管理。當需要從命令行搜索收件箱時,可以使用 IMAP 協議。以下是一個示例命令,用于在收件箱中搜索包含特定單詞的電子郵件:

curl -X 'SEARCH TEXT "example"' imaps://imap.example.com/INBOX

"example" 替換為要搜索的單詞,將 imap.example.com/INBOX 替換為 IMAP 服務器地址和要搜索的郵箱。

輕量級目錄訪問協議 (LDAP)

cURL 與 LDAP 的結合非常適合訪問和管理存儲目錄服務信息的服務器。要使用 cURL 進行 LDAP 訪問,可以運行以下命令:

curl -v ldap://example.com:389/dc=example,dc=com

此命令將在端口 389 上啟動與 example.com 的 LDAP 連接,并從基本可分辨名稱 (DN) dc=example,dc=com 開始執行搜索。請確保將 example.com 和基本 DN 替換為 LDAP 服務器的實際主機名和基本 DN。

郵箱協議版本 3 (POP3)

POP3 協議可以與 cURL 配合使用,從郵件服務器檢索電子郵件到本地環境。要使用 cURL 通過 POP3 協議檢索郵件,可以使用以下命令:

curl -u username:password -l pop3.example.com -R <message_id> > email.txt

雖然 cURL 支持 POP3,但此協議的安全性較低且功能有限。

實時流媒體協議(RTSP)

要從命令行與流媒體服務器交互,可以使用 cURL 的 RTSP 協議。以下是一個示例命令:

curl -i -X Play rtsp://example.com/stream

請注意,此命令不會在終端中顯示實際視頻,而是返回有關所請求媒體的基于文本的響應。

更多協議的使用方法可以參考 cURL 手冊頁。

Curl 命令的輸出

雖然 API 平臺通常提供直觀的界面來請求和傳輸數據到 URL,但 cURL 是終端中的一個強大工具。以下是一些常見的 cURL 命令及其系統輸出示例:

從終端輸出快速測試 API

正如所示,cURL 允許用戶從終端快速測試 API,而無需下載任何基于 API 的應用程序。以下命令使用 Google 提供的地理位置 API,返回達拉斯牛仔體育場的時區:

curl "https://maps.googleapis.com/maps/api/timezone/json?location=32.7480,-97.0934&timestamp=1331161200&key=YourKeyHere"

命令的輸出:

curl 命令 linux,, 時間

下載圖像和文件至設備輸出

由于終端可以訪問文件系統,因此可以輕松地從 URL 下載圖像。例如,這是 Google 圖片的 URL。使用 cURL,可以像這樣下載圖像:

curl https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png > google-logo.png

檢查以下命令的輸出:

cURL 命令在 Linux 上將返回圖像的二進制數據。通過將原始圖像數據保存到圖像文件中(擴展名為 .png,與原始圖像的擴展名匹配),可以將圖像保存在設備上。

保存 URL 內容輸出

與下載圖片類似,可以將 URL(如網頁)的內容保存到文件中。以下是保存 Google 主頁的示例:

curl -o google.html https://www.google.com

這個命令將 Google 主頁的源代碼保存到名為 google.html 的文件中。

總結

cURL 是一個 CLI 工具,通過不同的協議請求和傳輸 URL 數據。它提供了在終端中對 URL 的靈活控制。

在終端上使用 cURL 既簡單又強大。只需提供 URL 和所需的選項,即可從 URL 請求和下載數據,或者將數據傳輸到 URL 等操作。

一站搜索、試用、比較全球API!
冪簡集成已收錄 5490種API!
試用API,一次比較多個渠道