RESTful架構的起源與理解


Posted by hoyi-23 on 2021-10-04

進入這篇文章卻對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架構?

  1. 每一個URI表示一個資源
  2. 客戶端與伺服器間,傳遞資料的某種表現層。
  3. 客戶端透過HTTP動詞,對伺服器端資源進行操作,實現為資源表現層狀態轉化

#REST #RESTful







Related Posts

為什麼「class」可以放兩個以上的名稱?

為什麼「class」可以放兩個以上的名稱?

學 JavaScript 的那些筆記 2 -- npm & jest

學 JavaScript 的那些筆記 2 -- npm & jest

[ 筆記 ] DOM - 網路事件處理

[ 筆記 ] DOM - 網路事件處理


Comments