了解 Web Service API 應用
初步理解 API
在網路世界中,我們經常聽到 API (Application Programming Interface, 應用程式介面)。若要用一句話簡單說明,它就是:軟體與軟體之間的互動橋樑。透過 API,開發者可以將特定功能快速整合到自己的程式中,就像想要海釣時可以直接租借釣具,而不用自己製作釣竿。
值得注意的是,Web Service API 是 API 的一種;但在其他領域中,API 並不一定就是 Web Service API。
在前後端網頁開發中,提到 API,大多指的就是 Web Service API。它透過 URL 與遠端伺服器溝通,進行服務請求與資料交換。依據協定與資料格式的不同,Web Service API 可以分為:
- SOAP (Simple Object Access Protocol):使用專有 XML 格式,頻寬需求較高,常見於對資安要求嚴格的場合。
- REST (Representational State Transfer):支援多種資料格式(如 JSON、XML),是目前最普及的形式。
- XML-RPC:早期技術,使用特定 XML 格式,頻寬需求較低。
- JSON-RPC:與 XML-RPC 類似,但資料格式改用 JSON。
REST (表現層狀態轉換)
在上述類型中,最常見的是 REST API。需要注意的是,REST 並不是一種協定,而是一種 Architectural Style (建構風格)。設計 REST API 時,需要遵循以下限制 (REST Constraints):
REST Constraints
- Uniform Interface:以統一的 URL 對應資源,提供一致的對接方式。
- Client/Server Separation:客戶端與伺服器端分離,伺服器端更新不會影響客戶端運作。
- Stateless:無狀態。每次請求必須攜帶完整資訊,伺服器不會記錄先前的互動。
- Cacheable:回應可被快取,以提升效能。
- Layered System:允許分層架構,方便延展與管理。
有狀態與無狀態的比喻
- 有狀態 (Stateful): Server 會記住你之前的登入資訊。比如你第一次登入後,Server 把你的狀態記下來,下次你再登入時,Server 已經知道你是誰,處理起來會更快,這就叫有狀態。
就像你去經常光顧的早餐店,老闆認得你,還知道你習慣吃的早餐是什麼,不用再口頭告知一次。
- 無狀態 (Stateless): Server 不會記住你之前的資料。每次你要登入,都必須把所有需要的資訊重新提供給 Server,Server 才能處理,這叫無狀態。
就像你每次進酒吧,老闆都要你出示證明,確認沒問題才讓你進去——這就是無狀態。

HTTP 與 RESTful API
所謂 RESTful API,就是依照 REST 規則設計的 API。學習 RESTful API 前,通常會先介紹 HTTP,因為 RESTful API 就是利用 HTTP 這個網路傳輸協定來運作。網路世界主要分成「客戶端(Client)」和「伺服器端(Server)」。HTTP(超文本傳輸協定)規定了這兩者如何互相溝通。它有多種常見的請求方式,例如 GET、POST、PUT、PATCH、DELETE 等。
舉個例子:當你打開 FACEBOOK 首頁時,其實就是向伺服器發出一個「請求」(Request)。伺服器會先檢查網址是否存在,存在就把頁面資料回傳給你(Response);如果找不到,則會回傳像是 HTTP Status Code 404 這樣的錯誤訊息。同樣地,RESTful API 會把每個 URL 設計成對應一種操作。只要有 REST API 的網址(URL),就能用 HTTP 請求來做 GET(取得資料)、POST(新增資料)、PUT(更新資料)、DELETE(刪除資料)等動作。下面就是一些常見的 URL 範例:
依照 REST 風格設計的 API 稱為 RESTful API。由於它充分運用 HTTP (Hypertext Transfer Protocol),因此理解 HTTP 對於學習 RESTful API 至關重要。
HTTP 定義了 Client 與 Server 的互動方式,包含多種常見請求方法:
- GET:讀取資料
- POST:新增資料
- PUT / PATCH:更新資料
- DELETE:刪除資料
舉例來說:
/GET /items→ 獲取商品列表/GET /items/1→ 獲取商品資料/POST /items→ 新增商品/PATCH /items/1→ 更新商品/DELETE /items/1→ 刪除商品
這種設計方式,讓每個 URL 都能清楚對應一項操作。
SDK 與 API 的差異
除了 API 之外,開發過程中我們也常聽到 SDK (Software Development Kit)。兩者的差異如下:
| 項目 | API | SDK |
|---|---|---|
| 定義 | 軟體與軟體之間的介面 | 協助開發的工具集合 |
| 內容 | 僅提供功能介面與呼叫方式 | 包含 API、文件、範例程式碼、工具等 |
| 功能 | 提供特定功能的呼叫方式 | 提供完整開發環境與資源 |
| 舉例 | Google Maps API → 提供地圖定位功能 | Android SDK → 包含 API、模擬器、除錯工具等 |
簡單比喻
- API:像是一張菜單,你可以透過它點餐(呼叫功能)。
- SDK:就像一個廚房,不僅有菜單,還有食材與工具,讓你能自己做菜(開發完整應用)。