進入這篇文章卻對HTTP不熟悉的可以先參考
HTTP 協議 / 請求&Cache / 回應&Content-Type
REST的出現
REST是Roy Thomas Fielding在他2000年的博士論文中提出的。
Fielding是HTTP協議(1.0/1.1版)的主要設計者、Apache服務器軟體的作者之一。
他的論文題到:
網路研究主要關注系統間通信行為的細節、如何改進特定通信機制的表現,卻常常忽略一個事實,那就是改變應用程式的互動風格比改變互動協議,對整體表現有更大的影響。我照篇文章的主要目的,就是想在符合架構原理的前提下,理解和評估以網路為基礎應用軟體的架構設計,得到一個功能強、性能好、適宜通信的架構。
Fielding將這個架構原則(架構風格)命名為 REST(Representational State Transfer)。
其實省略了Resources,整個中文翻譯會是
資源表現層狀態轉化
只要符合REST原則的架構,就是RESTful架構。
REST原則
讓我們分字來理解REST
Resources 資源
網路上的任何一個實體都是資源,例如:一張圖片、一首歌、一段文本、一個服務...,都是一個資源。
資源可以用一個URI(統一資源標識符 Uniform Resource Identifier)指向它,每種資源都對應一個特定的URI。
而URL提供尋找該事物的方法(URL就是定位符, Locator)
Representation 表現層
將資源具體呈現出來的形式,就是資源的表現層
例如: 文本的表現層有 txt、HTML、XML、JSON;圖片有JPG、PNG...
在HTTP請求的訊息中用Accept和Content-Type指定的,就是對表現層描述。
State Transfer 狀態轉化
就是客戶端對伺服器端運用某個手段,讓伺服器端產生狀態轉化,而這種轉化會發生在表現層上,所以稱為資源表現層狀態轉化
(客戶端運用的手段就像: POST、GET、PUT、DELETE)
什麼是RESTful架構?
- 每一個URI表示一個資源
- 客戶端與伺服器間,傳遞資料的某種表現層。
- 客戶端透過HTTP動詞,對伺服器端資源進行操作,實現為資源表現層狀態轉化