REST以及RESTful的理解

這個概念其實對于后端開發(fā)人員應(yīng)該不陌生,簡單總結(jié)一句話來說

RESTful是一種針對Web名秀,iOS励负,Android和第三方開發(fā)者變?yōu)槠降鹊慕巧ㄟ^一套API來共同消費Server提供的服務(wù)的協(xié)議。

客戶端開發(fā)人員對于這個概念可能會陌生一點匕得,但是其實一直都在使用或者參與這個協(xié)議的實施继榆。

一、 首先為什么要用RESTful結(jié)構(gòu)呢汁掠?

? 因為在移動互聯(lián)網(wǎng)真正到來之前略吨,網(wǎng)頁是前端后端融在一起的,比如之前的PHP考阱,JSP等翠忠。在之前的PC時代問題不大,但是近年來移動互聯(lián)網(wǎng)的發(fā)展乞榨,各種類型的Client層出不窮秽之,RESTful可以通過一套統(tǒng)一的接口為 Web,iOS和Android提供服務(wù)姜凄。另外對于廣大平臺來說政溃,比如Facebook platform,微博開放平臺态秧,微信公共平臺等董虱,它們不需要有顯式的前端,只需要一套提供服務(wù)的接口申鱼,于是RESTful更是它們最好的選擇愤诱。在RESTful架構(gòu)下:

二、API事例

下面我們來視圖寫一個例子捐友,來讓大家理解下

restful 認(rèn)為一切皆是資源淫半, API 應(yīng)該是對資源(比如某視屏網(wǎng)站或者視頻軟件上的龍媽或者雪諾視頻集錦)的狀態(tài)的轉(zhuǎn)化。

一匣砖、基本原則

url 路徑中只應(yīng)該包含資源標(biāo)識符

比如科吭,獲取龍媽視頻昏滴,非RESTful API可能是這樣的

/GetLongma

這個業(yè)務(wù)中,PO是一種資源(看成龍媽的視頻集錦)对人,restful 風(fēng)格的 API 應(yīng)該應(yīng)該是

/Longma

那么谣殊,怎么表示這個API是獲取的的呢?

利用 http method 定義資源狀態(tài)轉(zhuǎn)化

上面這個例子牺弄,可以用GET定義方法來獲得龍媽視頻

GET ?/longma

restful 一般用http method來標(biāo)志資源狀態(tài)的轉(zhuǎn)化姻几,有以下四種方式:

POST 創(chuàng)建

PUT 更新

GET 獲取

DELETE 刪除

所以,對于視頻,它的創(chuàng)势告,更新蛇捌,獲取,刪除咱台,API如下

POST /longma ? ? ?(比如你上傳一個龍媽的視頻)

PUT /longma/:id? ? ? ? ? (比如你修改了之前你上傳的那個龍媽的視頻络拌,增加了你自己的旁白什么的,然后保存更新)

GET /longma/:id? ? ? ? ? (比如你自己去網(wǎng)站上搜索你之前上傳的那個龍媽的視頻)

DELETE /longma/:id? ? (比如你覺得不好看吵护,然后要刪除你之前上傳的龍媽視頻)

上面的例子盒音,其實實際業(yè)務(wù)一般不會這么簡單,比如該視頻的作者或者說上傳者都會從屬于某一個用戶馅而,所以API的結(jié)構(gòu)會是下面這樣,以 PUT 為例

PUT /user/:userid/longma/:videoid

這里就引申出一個值得討論的話題祥诽,如何設(shè)計從屬關(guān)系?從業(yè)務(wù)實體上設(shè)計從屬關(guān)系可能會遇到一些困難瓮恭,比如雄坪,某些情況下,父資源的創(chuàng)建可能會依賴子資源的創(chuàng)建屯蹦。一般情況下维哈,如果開銷不大的話,可以重新設(shè)計一下業(yè)務(wù)登澜。比如阔挠,已經(jīng)上傳的視頻必須從屬于一個user,那么業(yè)務(wù)上就規(guī)定必須先注冊(創(chuàng)建user)或者登陸脑蠕,才能上傳視頻购撼。

三、大白話圖文講解原理

如果還看不明白谴仙,撞墻100下

首先迂求,首先我們假設(shè)上海有個女孩叫小美,她是一個龍媽的粉絲晃跺,然后有一天小美想用電腦看龍媽的精彩錦集視頻揩局。她做了如下四步:

這基本上就是一個傳統(tǒng)的電腦軟件的架構(gòu)。現(xiàn)在我們看看如何把這個傳統(tǒng)的電腦軟件變成RESTful架構(gòu)的軟件掀虎。

我們把小美家的電腦主機從上海搬到北京凌盯,而小美的顯示器則仍然留在家里付枫。


然后我們把之前連接電腦主機和顯示器的“電線”換成“互聯(lián)網(wǎng)”,并且把四個部件(顯示器十气,主機励背,視頻文件春霍,騰訊視頻軟件)的名字換成:客戶端砸西,服務(wù)器,資源址儒,瀏覽器芹枷。


為了在茫茫互聯(lián)網(wǎng)世界中準(zhǔn)確快速的找到那臺服務(wù)器并觀看“龍媽集錦”莲趣,我們需要給在北京的這臺服務(wù)器加一個標(biāo)識符鸳慈,也就是常說的Url。 同時喧伞,為了區(qū)分服務(wù)器中的“龍媽集錦”和“雪諾集錦”走芋,我們也需要給這兩個視頻單獨加上標(biāo)識符。

這個服務(wù)器當(dāng)然不只有龍媽和雪諾的視頻潘鲫,還有其他千千萬萬的視頻翁逞,以及音樂,表單和網(wǎng)頁等等東西溉仑。服務(wù)器上放不下這么多東西挖函,所以需要把這些東西移到數(shù)據(jù)庫里面放著。

這樣浊竟,整個RESTFul的架構(gòu)基本上就成型了怨喘。我們來看看小美今天應(yīng)該如何觀看龍媽的視頻。

步驟1. 小美打開瀏覽器振定。注意此時小美家中的電腦硬盤里面沒有存任何視頻必怜,視頻存在北京的數(shù)據(jù)庫里面。


步驟2.小美輸入http://www.youku.cn/longma客戶端通過互聯(lián)網(wǎng)找到http://www.youku.cn的服務(wù)器后频,然后服務(wù)器根據(jù)longma在數(shù)據(jù)庫里找到了龍媽的視頻, 并把視頻數(shù)據(jù)通過互聯(lián)網(wǎng)傳回給了小美的客戶端梳庆。這個操作就是我們常說的GET。

步驟3. 小美開心地觀看傳回來的視頻徘郭,但是她不想在視頻中看到龍馬的敗家老哥靠益。

步驟4. 她通過瀏覽器或者騰訊視頻軟件剪掉了敗家老哥的部分,點擊了”提交“残揉,然后服務(wù)器接到這個請求之后把修改保存到數(shù)據(jù)庫里面胧后,并且告訴小美”你的修改已經(jīng)保存。這個操作就是我們常說的POST抱环。

我們來對比一下之前的單機情況下壳快。

騰訊視頻的文件路徑 = REST軟件的Url

騰訊視頻的打開操作 = REST軟件HTTP的GET

騰訊視頻的保存操作 = REST軟件HTTP的POST

當(dāng)然纸巷,還有很多細(xì)節(jié),不過這就是REST軟件框架的一個大概樣子眶痰。

四瘤旨、后記

這邊放一個關(guān)于RESTful的協(xié)議規(guī)范定義的詳細(xì)鏈接,可以參考

看在畫圖畫到吐血的份上竖伯,高抬貴手存哲,點個贊吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市七婴,隨后出現(xiàn)的幾起案子祟偷,更是在濱河造成了極大的恐慌,老刑警劉巖打厘,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件修肠,死亡現(xiàn)場離奇詭異,居然都是意外死亡户盯,警方通過查閱死者的電腦和手機嵌施,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莽鸭,“玉大人吗伤,你說我怎么就攤上這事〗ǎ” “怎么了牲芋?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捺球。 經(jīng)常有香客問我缸浦,道長,這世上最難降的妖魔是什么氮兵? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任裂逐,我火速辦了婚禮,結(jié)果婚禮上泣栈,老公的妹妹穿的比我還像新娘卜高。我一直安慰自己,他們只是感情好南片,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布掺涛。 她就那樣靜靜地躺著,像睡著了一般疼进。 火紅的嫁衣襯著肌膚如雪薪缆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天伞广,我揣著相機與錄音拣帽,去河邊找鬼疼电。 笑死,一個胖子當(dāng)著我的面吹牛减拭,可吹牛的內(nèi)容都是我干的蔽豺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼拧粪,長吁一口氣:“原來是場噩夢啊……” “哼修陡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起既们,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤濒析,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啥纸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡婴氮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年斯棒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片主经。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荣暮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罩驻,到底是詐尸還是另有隱情穗酥,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布惠遏,位于F島的核電站砾跃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏节吮。R本人自食惡果不足惜抽高,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望透绩。 院中可真熱鬧翘骂,春花似錦、人聲如沸帚豪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狸臣。三九已至莹桅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固棚,已是汗流浹背统翩。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工仙蚜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厂汗。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓委粉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娶桦。 傳聞我的和親對象是個殘疾皇子贾节,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容