[API-d1] - 定義 1 - 什麼是 REST/RESTful?
Representational State Transfer,簡稱 REST
,
它是一種網路架構風格,他並不是一種標準。
而 RESTful 可以這樣子想像:
美麗 (Beauty) 的事物可以稱為 Beautiful
設計為 REST 的系統就可以稱為 RESTful
以 API 而言,假設我們正在撰寫一組待辦事項的 API,
可能會有以下方式來作為 API 的 interface:
獲取使用者資料 /getAllUsers
獲取使用者資料 /getUser/1
新增使用者資料 /createUser
更新使用者資料 /updateUser/1
刪除使用者資料 /deleteUser/1
若是以 REST 風格來開發 RESTful API 的話:
獲取使用者資料 /GET /users
獲取使用者資料 /GET /user/1
新增使用者資料 /POST /user
更新使用者資料 /PUT /user/1
刪除使用者資料 /DELETE /user/1
兩者差異是在於 RESTful API 充分地使用了 HTTP protocol (GET/POST/PUT/DELETE),
達到
1. 以直觀簡潔的資源 URI
2. 並且善用 HTTP Verb
3. 達到對資源的操作
4. 並使用 Web 所接受的資料類型: JSON, XML, YAML 等,最常見的是 JSON
通常是使用 HTTP, URI, JSON, HTML 這些現有廣泛流行的協議和標準,
且使用 HTTP status code 來代表該資源的狀態。
框架中強制使用 REST 風格的最有名的應該就是 Ruby on Rails 了!
(不過我們並不會使用 Rails 來開發 API service :P)
p.s. 因為 REST 並非是一種標準,因此有時候也不一定非得要照著 REST 來做,
只是在資源的操作面上,可以設計成這類的風格,以達到簡潔易懂,並且可重用。
下一篇會來聊聊 REST 的要求與優點