昨天我們認識了 API 的角色與常見類型,今天要更深入到目前最普及的 RESTful API。
REST 並不是一個框架或工具,而是一種「設計風格」。
如果你常用的 API 介面結構簡潔、容易理解,很有可能就是遵循了 RESTful 的設計原則。
REST 全名 Representational State Transfer,是一種設計分散式系統的風格,由 Roy Fielding 在 2000 年提出。
它的核心精神是:
在 RESTful API 中,最常用的 HTTP 方法對應到 CRUD 操作:
HTTP 方法 | 功能 | 範例 |
---|---|---|
GET | 讀取資源 | GET /books → 取得所有書籍 |
POST | 建立資源 | POST /books → 新增一本書 |
PUT | 更新資源 | PUT /books/1 → 更新 id=1 的書 |
DELETE | 刪除資源 | DELETE /books/1 → 刪除 id=1 的書 |
一個好的 RESTful API,URI(路徑)應該要:
資源化(Noun-based):URI 使用名詞,而不是動詞。
/books
/getBooks
層級結構:用 /
代表資源的關係。
/books/1/authors
→ 取得 id=1 的書籍作者小寫與複數:保持一致性。
/users
/Users
or /user
避免冗長:簡潔易讀。
/orders/1
/getAllOrdersByUserId/1
假設我們要設計一個「待辦事項(Todo)」API,常見的設計如下:
功能 | HTTP 方法 | 路徑 |
---|---|---|
取得所有待辦 | GET | /todos |
取得單一待辦 | GET | /todos/{id} |
新增待辦 | POST | /todos |
更新待辦 | PUT | /todos/{id} |
刪除待辦 | DELETE | /todos/{id} |
這樣的設計簡單明瞭,光看路徑與方法就能知道在做什麼。
在 URI 裡放動詞
/createTodo
POST /todos
忽略 HTTP 狀態碼
200 OK
201 Created
,找不到回 404 Not Found