REST (Representational State Transfer) 是 Roy Fielding 博士在 2000 年博士論文中提出的軟體架構風格,而非標準協議。它基於 HTTP 協議,通過資源導向的設計,實現輕量、可擴展、易緩存的 Web 服務。本文系統梳理其核心概念、HTTP 動詞映射、與 SOAP 差異及優缺點。
/users/123)。Accept 標頭聲明期望格式,服務端通過 Content-Type 返回實際格式。| HTTP 方法 | 語義 | 對應操作 | 冪等性 |
|---|---|---|---|
| GET | 獲取資源 | Read (查詢) | 是 |
| POST | 創建資源 | Create (新增) | 否 |
| PUT | 完整更新資源 | Update (全量修改) | 是 |
| PATCH | 部分更新資源 | Update (局部修改) | 否 |
| DELETE | 刪除資源 | Delete (刪除) | 是 |
冪等性說明:同一請求執行多次結果相同。GET、PUT、DELETE 具備冪等性,適合自動重試;POST 不具備,需防重複提交。
/users 而非 /getUsers),層級關係用路徑(/users/123/orders)。/v1/users)或 Header 傳遞。| 維度 | REST | SOAP |
|---|---|---|
| 架構風格 | 資源導向、輕量 | 協議導向、重量級 |
| 傳輸協議 | 僅 HTTP/HTTPS | HTTP、SMTP、TCP 等 |
| 數據格式 | JSON、XML、任意 | 強制 XML |
| 緩存支持 | 原生支持 (ETag, Cache-Control) | 需額外處理 |
| 學習曲線 | 低 | 高 (WSDL, XSD, WS-*) |
| 適用場景 | 移動端、微服務、公開 API | 企業級、事務嚴格、異構系統集成 |
REST 尤其適合 無狀態 CRUD 操作(用戶管理、商品目錄、訂單查詢)。若涉及複雜事務、ACID 要求極高、或需 WS-Security/WS-ReliableMessaging 等企業級特性,SOAP 仍有不可替代性。
掌握 RESTful 核心思想,設計出既符合 HTTP 語義又易於演進的 API,是現代後端開發的基本功。