一文讀懂RESTful架構(gòu),讓后臺開發(fā)不再困難!
可能你之前從未聽說過RESTful架構(gòu),甚至不知道它是什么!但是,一旦了解它你就會發(fā)現(xiàn),RESTful架構(gòu)是如此的火爆,如此的風靡于互聯(lián)網(wǎng)軟件架構(gòu)!

RESTful既然如此倍受互聯(lián)網(wǎng)的歡迎,那么RESTful架構(gòu)究竟是什么呢?

別著急,想要了解RESTful,我們先來了解一位大佬Roy Thomas Fielding,一個出生于加州拉古納海岸的偉大計算機科學家。一個集”HTTP協(xié)議(1.0版和1.1版)主要設(shè)計者“、"Apache服務(wù)器軟件作者"、"Apache基金會第一任主席",這三大頭銜于一身的偉大男人。

2000年,他在博士論文《Architectural Styles and?the Design of Network-based Software Architectures》中首次提出了“REST”的概念。之后,這篇論文受到了廣泛的關(guān)注,在當時的互聯(lián)網(wǎng)界掀起了軒然巨波,對互聯(lián)網(wǎng)的發(fā)展產(chǎn)生了深遠的影響。

Fielding 所提出的"REST"可以看作是一種互聯(lián)網(wǎng)軟件架構(gòu)原則,凡是符合REST原則的架構(gòu),都可稱之為“RESTful"架構(gòu)。

RESTful的英文全稱為Representational State Transfer,直接翻譯過來即為“表現(xiàn)層狀態(tài)轉(zhuǎn)化”,看到這兒,你可能還是不明白,到底什么是RESTful?。靠梢杂萌嗽挶硎疽幌聠??其實“表現(xiàn)層”省略了主語,它指的是“資源”的表現(xiàn)層。下面,我們來慢慢詳解有關(guān)內(nèi)容。
(1)資源(Resources)
RESTful中的資源指的是,互聯(lián)網(wǎng)上的一個實體或是一條有價值的信息。資源可以是一段文本、一張圖片、一首歌曲、一種服務(wù)。每種資源對應(yīng)著一個特定的URL(Uniform Resource Locator)——統(tǒng)一資源定位符。

URI成為了每一個資源的地址,更像是獨一無二的識別符。因此,從這個角度來看,所謂的“上網(wǎng)”,就是調(diào)用URL與互聯(lián)網(wǎng)上的一些“資源”交互。

(2)表現(xiàn)層(Representation)
我們將互聯(lián)網(wǎng)上,資源所呈現(xiàn)出來各中表現(xiàn)形式,稱為它的“表現(xiàn)層”。例如,文本可以由TXT表現(xiàn),也可由XML、HTML、JSON等形式表現(xiàn)。這些都屬于文本的“表現(xiàn)層”。

(3)狀態(tài)轉(zhuǎn)化(State Transfer)
在訪問互聯(lián)網(wǎng)的過程中,必然存在著客戶端和服務(wù)器的互動,因此也必然涉及著數(shù)據(jù)和狀態(tài)的變化。

另外,互聯(lián)網(wǎng)的通信協(xié)議是基于HTTP的無狀態(tài)協(xié)議。這就意味著,所有的狀態(tài)都保存在服務(wù)器端。因此,如果客戶端想要操作服務(wù)器,即前臺想要訪問后臺資源時,必須通過一定的方法途徑,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)。這種轉(zhuǎn)化又恰好是發(fā)生在表現(xiàn)層之上的,所以這個過程就被稱之為"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

由于基于HTTP協(xié)議,客戶端來使服務(wù)端發(fā)生變化的操作也就是常用的GET、POST、PUT、DELETE這四個操作。GET----獲取資源,POST----新建資源,PUT----更新資源,DELETE----刪除資源。
因此,RESTful用一句話來概括就是”URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。"
(4)為什么要用RESTful架構(gòu)?
近年來前端設(shè)備層出不窮(手機、平板、桌面電腦、其他專用設(shè)備......),不同的前端設(shè)備與后端進行通信交互時,每一個都要寫上不同的協(xié)議嗎?

答案當然是不必須的,RESTful正是為解決此問題而誕生的。它可以通過一套統(tǒng)一的接口為 Web,iOS和Android等不同前端提供服務(wù),建立統(tǒng)一的后臺管理。
如果你耐心的看完了此文,那么恭喜你,關(guān)于RESTful的理論知識你已全部掌握~記得下次一起來實戰(zhàn)哦~