REST 架構與 RESTful API 基本原則
REST(Representational State Transfer)是一種軟體架構風格,專為網路上的通訊而設計。它為 API 的設計和運作提供了一套清晰的指導方針,使得 API 能夠在大規模的網路環境中保持高效能、可靠性和可擴展性。
REST 與 RESTful API
- REST:是一種架構風格,指導如何設計 API 以支持可靠且高效的網路通訊。REST 並不是一種協議,而是一種通用設計原則,廣泛應用於 Web 服務中。
- RESTful API:指遵循 REST 原則設計的 API。這些 API 通常基於 HTTP 協議,用於構建 Web 服務。當 Web 服務遵循 REST 架構時,通常稱之為 RESTful Web 服務。
RESTful API 的核心設計原則
RESTful API 的設計遵循六個核心原則,這些原則共同確保了 API 的可擴展性、性能和可移植性:
- 無狀態 (Stateless):
- 在 REST 架構中,所有請求都是無狀態的,這意味著每個請求都包含了完成請求所需的所有信息。伺服器不會保存任何有關之前請求的上下文,因此每個請求都是獨立的,與其他請求相互隔離。這樣的設計提高了 API 的可擴展性和可靠性。
- 客戶端-伺服器 (Client-Server):
- REST 架構遵循客戶端-伺服器模型,這意味著用戶端負責處理用戶界面和用戶交互,而伺服器則負責處理數據存儲和業務邏輯。這種分離使得客戶端和伺服器可以獨立發展,提高了系統的靈活性和可擴展性。
- 可快取性 (Cacheable):
- RESTful API 的回應應該明確地標示為可快取或不可快取。當回應被標示為可快取時,用戶端可以將回應存儲在快取中,以便在將來的請求中直接使用,從而減少伺服器負載並提高應用性能。
- 統一界面 (Uniform Interface):
- 統一介面是 REST 架構的核心,它要求伺服器通過標準化的接口與客戶端進行通信。這包括一致的資源標識(如 URL)、標準化的請求方法(如 GET、POST)以及一致的數據格式(如 JSON 或 XML)。統一介面確保了 API 的簡單性和可預測性,使開發者能夠更容易地理解和使用 API。
- 分層系統 (Layered System):
- 在分層系統架構中,用戶端可以通過中間層(如代理或網關)與伺服器通信。這種分層結構允許在系統中添加額外的功能層(如負載均衡、安全性層),而不會影響用戶端與伺服器之間的直接通信。這種設計提高了系統的可擴展性和安全性。
- Code-On-Demand (Optional):
- REST 架構允許伺服器在必要時向客戶端發送可執行代碼(如 JavaScript)。這種方式使得客戶端可以動態擴展其功能,不過這並不是 REST 必須遵循的原則,而是一個可選項目。
常用的 HTTP 方法
RESTful API 通常基於 HTTP 協議,並使用以下幾種常見的 HTTP 方法來實現資源的操作:
- GET:用於檢索資源的數據。這是一個讀操作,不應對伺服器上的資源產生任何副作用。
- 範例:
GET /users/123
用於檢索 ID 為 123 的使用者數據。
- 範例:
- POST:用於創建新的資源。這是一個寫操作,通常會在伺服器上創建新的記錄或資源。
- 範例:
POST /users
用於創建一個新的使用者。
- 範例:
- PUT:用於更新或替換現有資源。這也是一個寫操作,會完全替換目標資源的內容。
- 範例:
PUT /users/123
用於更新 ID 為 123 的使用者信息。
- 範例:
- DELETE:用於刪除資源。這是一個破壞性操作,用於刪除指定的資源。
- 範例:
DELETE /users/123
用於刪除 ID 為 123 的使用者。
- 範例:
- PATCH:用於更新資源的部分內容。與 PUT 不同,PATCH 只更新資源中的特定字段,而不是整個資源。
- 範例:
PATCH /users/123
用於更新 ID 為 123 的使用者的某些字段。
- 範例: