[API-d1] - 定義 1 - 什麼是 REST/RESTful?

鐵人賽 RESTful API Day1:以待辦事項 API 為例說明 REST 架構風格的定義,展示善用 HTTP Verb 設計簡潔 URI 的 RESTful 風格對比。

Representational State Transfer,簡稱 REST
它是一種網路架構風格,他並不是一種標準。

而 RESTful 可以這樣子想像:
美麗 (Beauty) 的事物可以稱為 Beautiful
設計為 REST 的系統就可以稱為 RESTful

以 API 而言,假設我們正在撰寫一組待辦事項的 API,
可能會有以下方式來作為 API 的 interface:

1
2
3
4
5
獲取使用者資料     /getAllUsers
獲取使用者資料     /getUser/1
新增使用者資料     /createUser
更新使用者資料     /updateUser/1
刪除使用者資料     /deleteUser/1

若是以 REST 風格來開發 RESTful API 的話:

1
2
3
4
5
獲取使用者資料     /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 的要求與優點

comments powered by Disqus
Powered by Hugo. Theme Stack. All Rights Reserved.