curl -H "Content-Type: application/json" --data "{\"data\":\"some data\"}" https://open.explinks.com/echo/

什么是 cURL 命令?

cURL是一種命令行工具,使用此命令行界面 (CLI),用戶可以指定服務器 URL(他們想要發送請求的位置)即可請求 Web 服務器。

cURL 命令使用 libcURL 客戶端 URL傳輸庫。此庫支持多種不同的傳輸協議,包括 HTTPS、SMTP 和 FTP。它還允許您在發出請求時包含 Cookie、設置代理和添加身份驗證憑據。

cURL 支持幾乎各種互聯網協議(DICT、FILE、FTP、FTPS、 GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、 MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET 和 TFTP)。

cURL具有如下優勢:

cURL 的起源和發展歷史

在上個世紀 90 年代,人人都在用命令行工具,Daniel Sterberg 想開發一款簡單好用的 IRC 腳本來幫助聊天室網友兌換貨幣。在 1997 年,為互聯網協議數據傳輸基礎的選擇并不多 ,因此,Httpget(基于 HTTP 傳輸的數百行代碼)便成為 cURL 最初的選擇。為了紀念這段基礎代碼,取名為 HTTPGET 1.0。 

幾個月后,因開發出了支持 FTP 的客戶端而棄用之前的名字,更名為 url2.0。幾度更新后,于 1998 年 3 月30 日,再次更名為如今大名鼎鼎的 cURL3.0。

cURL是做什么用的?

cURL 的作用就是通過互聯網協議傳輸數據,可用于以下場景:

cURL 怎么用?

使用相對較新操作系統的用戶,幾乎人人都可能在使用 cURL,因為它是 Windows、MacOS 和大多數 Linux 系統的默認配置。如果是較老的操作系統,例如 Windows 10 以前的系統,可能需要下載cURL并安裝 cURL。

要使用 cURL,只需打開終端輸入 “curl” 即可,正常情況下,系統會調出 “curl –help”。

cURL 命令的語法

curl 命令的基本語法可以包括選項和 URL:

cURL [選項] [URL]

1、選項:當我想自定義請求的行為時,需要指定選項,以下是一些常見選項:

2、URL:指定的 URL 或位置告訴 cURL 命令我想要從哪里訪問數據或發送數據。

cURL用于發送 API 請求

我們可以使用 curl 發送 API 請求。每個請求通常由四個主要部分組成:

請求代碼:
curl -d @request.json -H "Content-Type: application/json" --data "{\"data\":\"some data\"}" http://localhost:8082/spring-rest/foos/new
-- 端點:http://localhost:8082/spring-rest/foos/new
-- HTTP方法:選項-d,表示用post方法
-- 標頭:Content-Type: application/json
-- Body:{\"data\":\"some data\"}
返回值:
{
"timestamp" : "15-07-2018 05:57",
"status" : 415,
"error" : "Unsupported Media Type",
"exception" : "org.springframework.web.HttpMediaTypeNotSupportedException",
"message" : "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported",
"path" : "/spring-rest/foos/new"
}

cURL常見使用場景及指令格式指南

在本節中,將使用 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 命令 linux, 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。接下來我們將介紹這兩種方法。

應用程序/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”,**這是一個帶有 cURL 值的名稱鍵和一個帶有文章值的類型鍵。

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

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

{ “名稱”:“cURL”, “類型”:“文章”, “ID”:101 }

應用程序/JSON

使用 cURL,您還可以發送字符串化的 JSON 對象,如下所示:終端cURL -X POST -d ‘{“name”: “cURL”, “type”: “article”}’ https://jsonplaceholder.typicode.com/posts

如上所述,此請求中的數據以application/x-www-form-urlencoded格式發送。以下是 API 的結果:

{ “{“名稱”: “cURL”, “類型”: “文章”}”: “”, “id”: 101 }

API 認為請求數據是 URL 編碼的數據格式,因此它不會按照您的預期進行解釋。您必須使用 -H 帶大寫 H 的連字符)選項(–header的別名)并傳遞Content-Type標頭來指定這是 JSON 數據格式,如下所示:終端cURL -X POST -d ‘{“name”: “cURL”, “type”: “article”}’ -H “Content-Type: application/json” https://jsonplaceholder.typicode.com/posts

現在,您可以從 API 獲得正確的響應主體:

{ “名稱”:“cURL”, “類型”:“文章”, “ID”:101 }

您不必在終端中輸入 JSON 字符串,而是可以指定 cURL 命令將用于數據選項的 JSON 文件。例如,假設您有一個名為data.json的文件,其中包含以下內容:

{ “名稱”:“cURL”, “類型”:“文章” }

您可以運行 cURL 命令,假設它與文件位于同一項目中。此命令將獲取 JSON 文件,對其進行字符串化,并將其與請求一起發送。您將獲得與上述相同的結果:

{ “名稱”:“cURL”, “類型”:“文章” }

刪除服務器上的資源

您可以使用DELETE方法和 cURL 命令向 API 發送刪除請求。您向此請求提供的 URL 和數據取決于 API 配置。

對于 JSON Fake API,您可以像這樣指定資源路徑和DELETE方法:終端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 能夠正確解釋請求。

上述代碼返回以下響應主體:

{ “名稱”:“json”, “類型”:“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-sever] –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:/serveraddress.com/resource/selector

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

HTTPS 是一種流行的協議,當與命令行中的 curl 一起使用時,它可以簡化檢索數據、API 交互、自動執行測試等任務以及一些網絡操作。

使用此協議時,由于 HTTP 的安全加密連接,跨服務器傳輸的數據可以保持機密性和完整性。運行以下命令,但請確保指定要訪問的網址:終端cURL https://www.example.com

互聯網消息協議 (IMAP)

使用 IMAP 和 curl 命令可以實現郵件服務器交互、檢索和閱讀電子郵件以及郵箱管理。當我想從命令行搜索收件箱時,我會使用 IMAP 協議。curl -X’搜索文本“示例”’ imaps://imap.example.com/INBOX

使用上面的命令結構,我可以在收件箱中搜索包含特定單詞的電子郵件。 將“example”替換為您要在電子郵件中查找的單詞。將“ // imap.example.com/INBOX ”更改為您的 IMAP 服務器地址 + 您要搜索的郵箱。

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

將 cURL 與 LDAP 結合使用非常適合訪問和管理存儲目錄服務信息的服務器。如果您想使用命令行完成諸如驗證用戶身份、更新目錄或修改訪問控制列表等任務,那么 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 -u username:password -l pop3.example.com -R <message_id> > email.txt

雖然可以將 POP3 與 curl 一起使用,但它的安全性較低且功能有限。

實時流媒體協議(RTSP)

如果要從命令行與流媒體服務器交互,可以使用帶有 cURL 的 RTMP 協議。命令結構如下所示:終端curl -i -X Play rtsp://example.com/stream

請記住,實際視頻不會顯示在終端中。相反,您將收到有關所請求媒體的基于文本的響應。

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,, 時間

使用 cURL 和圖片的 URL 返回圖片的二進制數據。通過將原始圖片數據存儲在圖片文件中(擴展名為 .png,與原始圖片的擴展名匹配),您可以將圖片保存在設備上。

保存 URL 內容輸出

與下載圖片一樣,您也可以將 URL(例如網頁)的內容保存到文件中。以下是 Google 主頁的示例:終端cURL -o google.html https://www.google.com

下面的輸出將 Google 主頁的源代碼保存到名為 google.html 的文件中。

curl 命令 linux,, 保存

讓 cURL 為您服務。

cURL 是一個 CLI 工具,可讓您使用不同的協議通過 URL 請求和傳輸數據。它為您提供了靈活性和對終端上 URL 的控制。

在終端上使用 cURL 很簡單,但對于每個用戶來說可能并不直觀。通過提供 URL 和所需的選項,您可以從 URL 請求和下載數據、將數據傳輸到 URL 等等。

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