關於這兩個名詞的好奇,其實是因為接觸 ruby on rails 的學習歷程中,查詢相關的職缺資訊後,發現許多公司的需求不斷提到這兩個字,因此想要去了解這是在說甚麼,才知道原來 ROR 把這樣的設計風格大大發揚光大呢! 不過都學了 Rails 還不好好把這些名詞弄懂真的太對不起了。
Representational State Transfer,簡稱 REST,直譯為"表徵化狀態轉變",但一聽到這樣的名詞其實根本搞不懂這到底在說甚麼。
其實 REST 是一種軟體架構風格 ,適合應用在複雜的網路服務環境中,而 HTTP 也是符合 REST 的架構的一項實作。**就是把每個網址(URL)當做資源(Resource)來看待,對同一個資源做不同的動作(HTTP Verb)會得到不同的結果。
**
一開始看到會直覺想到 beautiful, successful 之類的單字都是用名詞 + "ful" 轉變來,所以 RESTful 可算是形容詞,一般來說就是符合 REST 理念所設計出來的系統可稱為 RESTful,像是符合 REST 概念設計的網址,又稱為 RESTFul Route。
EX:以我們平常上網的例子來說明應該比較好了解這些組成之間的關係
https://oseanchen.github.io/(名詞)
,對瀏覽器送出請求 Request讀取(GET 動詞)
這個網址位置的 HTML 格式文件(表徵)
圖片(表徵)
,或者點選連結獲得 XML 文件(XML 表徵)
,甚至新增文章或留言(POST 動詞)
利用Restful的設計風格,可以讓人很一目瞭然的知道目前的位置是要做甚麼的,為什麼會這麼說? 舉一些例子來讓大家看看吧!
假設我們要建立我自己的部落個並且設計跟文章 Article 相關的路徑 (用articles當作資源)
Sean_blog/articles
=> 觀看所有文章的列表Sean_blog/articles/new
=> 新增文章的頁面Sean_blog/articles/:id
=> 觀看特定文章的頁面Sean_blog/articles/:id/edit
=> 編輯特定文章的頁面
是不是很能馬上了解到路徑所代表的意義呢? 同樣把articles 資源可以替換成別的資源就換變成其他意義,像是可以換成會員 (member) 或是商品 (product) 等等
也可以設計跨多種資源同樣可以清楚表達,例如
Sean_blog/articles/1/comment
第一篇文章的留言版Sean_blog/category/5/articles/3
部落格文章分類區域的第5個類別內的第3篇文章
REST 操作 Web 的基本行為是一種表徵化狀態轉變,主要是對不同的資源 (URL) 進行特定動作,達成不同的資料 (表徵) 呈現結果。
對資源進行的動詞可以分成:
實作 rails 的過程其實一直在歷經這樣操作,也是因為這樣風格規範之下可以呈現簡明的網址設計。
參考資料: