在本文中,我們將討論如何curl與RESTful API進行交互。curl是用於從遠程服務器或向遠程服務器傳輸數據的命令行實用程序。默認情況下,它已安裝在macOS和大多數Linux發行版上。
應用程序接口(API)是允許軟件程序相互通信的一組定義和協議。
術語REST代表代表性的狀態轉移。它是一種體系結構樣式,由創建Web服務時要使用的一組約束組成。
RESTful API是遵循REST體系結構的API。通常,REST API使用HTTP協議來發送和檢索數據以及JSON格式的響應。您可以使用標准的HTTP方法通過API創建,查看,更新或刪除資源。
要測試RESTful API並與之交互,可以使用任何可以發出HTTP請求的庫或工具。
API請求由四個不同部分組成:
- endpoint。這是客戶端用於與服務器通信的URL。
- HTTP method。它告訴服務器客戶端要執行什么操作。最常用的方法是
GET
POST
PUT
DELETE
和PATCH
- header。用於在服務器和客戶端之間傳遞其他信息,例如授權。
- body。數據發送到服務器。
Curl參數選項
該curl
命令的語法如下:
curl [options] [URL...]
以下是我們發出請求時將使用的選項:
-X
,--request
-要使用的HTTP方法。-i
,--include
-包括響應頭。-d
,--data
-要發送的數據。-H
,--header
-要發送的其他標頭。
HTTP GET
GET方法從服務器請求特定資源。
使用發出HTTP請求時,GET是默認方法curl
。以下是向所有帖子的JSON表示形式向JSONPlaceholder API 發出GET請求的示例:
curl https://jsonplaceholder.typicode.com/posts
要過濾結果,請使用查詢參數:
curl https://jsonplaceholder.typicode.com/posts?userId=1
HTTP POST
POST方法用於在服務器上創建資源。如果資源存在,則將其覆蓋。
以下命令將使用通過該-d
選項指定的數據創建一個新帖子:
curl -X POST -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts
使用Content-Type
標頭指定請求正文的類型。默認情況下,未指定此標頭時curl
使用Content-Type: application/x-www-form-urlencoded
要發送JSON格式的數據,請將主體類型設置為application/json
:
curl -X POST -H "Content-Type: application/json" \
-d '{"userId": 5, "title": "Hello World", "body": "Post body."}' \
https://jsonplaceholder.typicode.com/posts
HTTP PUT
PUT方法用於更新或替換服務器上的資源。它將指定資源的所有數據替換為請求數據。
curl -X PUT -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts/5
HTTP補丁
PUT方法用於對服務器上的資源進行部分更新。
curl -X PUT -d "title=Hello Universe" https://jsonplaceholder.typicode.com/posts/5
HTTP刪除
DELETE方法從服務器中刪除指定的資源。
curl -X DELETE https://jsonplaceholder.typicode.com/posts/5
認證方式
如果API端點需要身份驗證,則需要獲取訪問密鑰。否則,API服務器將使用“禁止訪問”或“未經授權”響應消息進行響應。
獲取訪問密鑰的過程取決於您使用的API。獲得訪問令牌后,可以在標頭中發送它:
curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" "https://api.server.io/posts"
結論
我們已經向您展示了如何curl
用於發出測試API請求。有關的更多信息curl
,請訪問“ Curl文檔”頁面。