在上一篇文章中,我們對 API 有了初步了解,並探討了它作為應用程式間溝通橋樑的角色。今天,我們將進一步深入介紹 Web API,尤其是它如何運作在現代網路應用程式中。同時,我們會詳細解釋 HTTP 協議,因為它是 Web API 交流的基礎。我們將討論 HTTP 的請求方法、結構,以及它如何回傳響應。
Web API 是一種 API,專門用於網路上的應用程式之間進行數據交換和操作。就像我們之前提到的,API 是應用程式之間的「溝通橋樑」,而 Web API 就是這種溝通的網路版。不同的應用程式可以透過 Web API 共享功能或數據,而無需直接整合彼此的程式碼。
Web API 是基於 HTTP 協議 來進行通信的,這就像網頁伺服器和瀏覽器之間的「語言」。每當你打開一個網站時,背後其實是 HTTP 協議在傳遞請求和回應,而 Web API 也同樣透過這個協議來實現應用程式之間的互動。
HTTP(Hypertext Transfer Protocol,超文本傳輸協議)是 Web API 最常用的通訊協議。它定義了如何在客戶端和伺服器之間傳遞數據。每一次請求和回應都依賴於 HTTP 協議,它告訴我們該如何發出請求、數據該如何被傳遞,以及伺服器該如何回應這些請求。讓我們看看一些常見的 HTTP 請求方法。
GET /api/users/123
用來獲取 ID 為 123 的用戶資料。POST /api/users
用來新增一位新的用戶。PUT /api/users/123
更新 ID 為 123 的用戶資料。PATCH /api/users/123
只更新 ID 為 123 的用戶部分資料。DELETE /api/users/123
刪除 ID 為 123 的用戶資料。這些方法為 Web API 定義了與伺服器互動的方式,每種請求方法對應不同的操作,具體執行邏輯由伺服器決定。
以下是 HTTP 請求方法的整理表格,可以更直觀地瞭解每種方法的用途、特點,以及它們對伺服器資源的影響和安全性:
HTTP 方法 | 用途 | 範例 | 特點 | 對資源的影響 | 安全性 |
---|---|---|---|---|---|
GET | 從伺服器獲取資源 | GET /api/users/123 |
請求用來讀取數據,不會改變伺服器上的資源 | 不改變 | 安全、冪等 |
POST | 創建新的資源 | POST /api/users |
用來創建新資源,通常會返回創建的資源信息 | 改變資源 | 非安全、非冪等 |
PUT | 完整更新資源 | PUT /api/users/123 |
用來替換現有資源的全部內容 | 完整替換 | 非安全、冪等 |
PATCH | 部分更新資源 | PATCH /api/users/123 |
用來部分更新現有資源 | 部分修改 | 非安全、非冪等 |
DELETE | 刪除資源 | DELETE /api/users/123 |
用來刪除資源,會永久刪除伺服器上的數據 | 刪除資源 | 非安全、冪等 |
HTTP Headers 是請求和回應中的元數據,用於傳遞關於請求和響應的額外信息。常見的 HTTP Headers 包括:
application/json
或 text/html
。HTTP Body 是用來傳遞具體數據的部分。對於 POST、PUT、PATCH 這類操作,請求的 Body 通常包含了用來創建或更新資源的數據。而響應的 Body 則通常包含伺服器返回的資源數據。
每次伺服器處理完請求後,會返回一個狀態碼,告訴客戶端請求的結果。這些狀態碼幫助我們快速了解伺服器的回應狀況。狀態碼分為五大類:
200 OK
。301 Moved Permanently
。404 Not Found
。500 Internal Server Error
。狀態碼 | 描述 | 類型 | 說明 |
---|---|---|---|
200 | OK | 成功 | 請求成功並返回數據。 |
201 | Created | 成功 | 新資源已成功創建。 |
204 | No Content | 成功 | 請求成功,但無需返回內容。 |
301 | Moved Permanently | 重定向 | 資源已永久移動到新位置。 |
302 | Found | 重定向 | 資源臨時移動。 |
304 | Not Modified | 重定向 | 資源未修改,可使用緩存。 |
400 | Bad Request | 客戶端錯誤 | 請求格式有誤,伺服器無法理解。 |
401 | Unauthorized | 客戶端錯誤 | 請求需要身份驗證。 |
403 | Forbidden | 客戶端錯誤 | 用戶無權進行此操作。 |
404 | Not Found | 客戶端錯誤 | 找不到請求的資源。 |
500 | Internal Server Error | 伺服器錯誤 | 伺服器處理請求時發生錯誤。 |
502 | Bad Gateway | 伺服器錯誤 | 伺服器作為代理,收到無效的上游響應。 |
503 | Service Unavailable | 伺服器錯誤 | 伺服器暫時無法處理請求。 |
這邊最最最常看到就是那萬惡的404Not Found,就是基於Http協議的狀態碼!
Web API 的運作離不開 HTTP 協議。無論是發送請求還是接收回應,HTTP 協議中的方法、Headers、Body 和狀態碼,都是讓 Web API 正常運作的基礎。掌握這些概念後,我們就能更好地理解如何設計和使用 Web API。
在下一篇文章中,我們將探討如何設計優秀的 Web API,讓它不僅能運作流暢,還能符合最佳實踐,讓開發者和使用者都獲得良好的體驗。