如何使用Curl向RESTFUL風格的API發送HTTP請求


在本文中,我們將討論如何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 DELETEPATCH
  • 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文檔”頁面。

 原文地址:https://www.iplayio.cn/post/5247697


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM