Restful架構(gòu)風(fēng)格

一检号、什么是Rest?

???????Rest -- REpresentational State Transfer暇唾,全稱是 Resource Representational State Transfer(資源表現(xiàn)層狀態(tài)轉(zhuǎn)化);
???????組成一:Resource資源,即數(shù)據(jù)(網(wǎng)絡(luò)的核心),可以是一段文本悦污、一張圖片等;
???????組成二:Representational某種表現(xiàn)形式钉蒲,可以用txt格式表現(xiàn)切端,也可以用HTML格式、XML格式表現(xiàn)顷啼,JSON是目前最常用的資源表示格式踏枣;
???????組成二:State Transfer:狀態(tài)變化,通過HTTP動(dòng)詞(GET,POST,PUT,DELETE,PATCH)實(shí)現(xiàn)钙蒙。

二茵瀑、什么是Restful?

???????最初網(wǎng)頁實(shí)現(xiàn)中躬厌,前端后端是融在一起的瘾婿,比如之前的PHP,JSP等網(wǎng)站烤咧,在之前的桌面時(shí)代問題不大,但是近年來移動(dòng)互聯(lián)網(wǎng)的發(fā)展抢呆,各種類型的Client層出不窮煮嫌,RESTful可以通過一套統(tǒng)一的接口為 Web,iOS和Android提供服務(wù)抱虐,另外對于廣大平臺(tái)來說昌阿,比如Facebook platform,微博開放平臺(tái)恳邀,微信公共平臺(tái)等懦冰,它們不需要有顯式的前端,只需要一套提供服務(wù)的接口谣沸,于是RESTful更是它們最好的選擇刷钢;
???????在RESTful架構(gòu)下:Web端不再用之前典型的PHP或JSP架構(gòu),而是改為前段渲染和附帶處理簡單的商務(wù)邏輯(比如AngularJS或者BackBone的一些樣例)乳附,Web端和Server只使用上述定義的API來傳遞數(shù)據(jù)和改變數(shù)據(jù)狀態(tài)内地,格式一般是JSON。iOS和Android同理赋除,由此可見阱缓,Web,iOS举农,Android和第三方開發(fā)者變?yōu)槠降鹊慕巧ㄟ^一套API來共同消費(fèi)Server提供的服務(wù)荆针。
???????RESTful可以通過一套統(tǒng)一的接口為 Web,iOS和Android提供服務(wù),Server統(tǒng)一提供一套R(shí)ESTful API航背,web+ios+android作為同等公民調(diào)用API喉悴。


Restful

???????簡單來說,RESTful就是用URL定位資源沃粗,用HTTP描述操作:看Url就知道要什么粥惧,看http method就知道干什么,看http status code就知道結(jié)果如何最盅;

三突雪、REST的限制?

???????1)客戶端與服務(wù)器端分離(Client-Server)涡贱,優(yōu)點(diǎn)是提高了用戶界面的便捷性(操作簡單)咏删,通過簡化服務(wù)器提高可伸縮性(高性能、低成本)问词,允許組件分別優(yōu)化(可以讓服務(wù)端和客戶端分別進(jìn)行改進(jìn)和優(yōu)化);
???????2)無狀態(tài)(Stateless):無狀態(tài)的督函,即所有的資源,都可以通過URI定位激挪,而且這個(gè)定位與其他資源無關(guān)辰狡,也不會(huì)因?yàn)槠渌Y源的變化而改變;
???????有狀態(tài)和無狀態(tài)的區(qū)別:如查詢員工的工資垄分,如果查詢工資是需要登錄系統(tǒng)宛篇,進(jìn)入查詢工資的頁面,執(zhí)行相關(guān)操作后薄湿,獲取工資的多少叫倍,則這種情況是有狀態(tài)的,因?yàn)椴樵児べY的每一步操作都依賴于前一步操作豺瘤,只要前置操作不成功吆倦,后續(xù)操作就無法執(zhí)行;如果輸入一個(gè)url即可得到指定員工的工資坐求,則這種情況是無狀態(tài)的蚕泽,因?yàn)楂@取工資不依賴于其他資源或狀態(tài),且這種情況下瞻赶,員工工資是一個(gè)資源赛糟,由一個(gè)url與之對應(yīng),可以通過HTTP中的GET方法得到資源砸逊,這是典型的RESTful風(fēng)格璧南;


無狀態(tài)

有狀態(tài)

???????客戶端發(fā)起的每個(gè)請求都要包含服務(wù)器所需要的所有信息,提高可見性(可以單獨(dú)考慮每個(gè)請求)师逸,提高了可靠性(更容易從局部故障中修復(fù))司倚,提高可擴(kuò)展性(降低了服務(wù)器資源使用)
???????3)緩存(Cachable):服務(wù)器返回信息必須被標(biāo)記是否可以緩存,如何緩存,客戶端可能會(huì)重用之前的信息發(fā)送請求动知,優(yōu)點(diǎn):減少交互次數(shù)皿伺,減少交互的平均延遲
???????4)分層系統(tǒng)(Layered System):系統(tǒng)組件不需要知道與他交流組件之外的事情,封裝服務(wù)盒粮,引入中間層鸵鸥;優(yōu)點(diǎn):限制了系統(tǒng)的復(fù)雜性,提高可擴(kuò)展性丹皱;
???????5)統(tǒng)一接口(Uniform Interface):RESTful架構(gòu)風(fēng)格規(guī)定妒穴,數(shù)據(jù)的元操作,即CRUD(create, read, update和delete,即數(shù)據(jù)的增刪查改)操作摊崭,分別對應(yīng)于HTTP方法:GET用來獲取資源讼油,POST用來新建資源(也可以用于更新資源),PUT用來更新資源呢簸,DELETE用來刪除資源矮台,這樣就統(tǒng)一了數(shù)據(jù)操作的接口,僅通過HTTP方法根时,就可以完成對數(shù)據(jù)的所有增刪查改工作瘦赫;
????????即:GET(SELECT):從服務(wù)器取出資源(一項(xiàng)或多項(xiàng));
????????????????POST(CREATE):在服務(wù)器新建一個(gè)資源蛤迎;
????????????????PUT(UPDATE):在服務(wù)器更新資源(客戶端提供完整資源數(shù)據(jù))耸彪;
????????????????PATCH(UPDATE):在服務(wù)器更新資源(客戶端提供需要修改的資源數(shù)據(jù));
????????????????DELETE(DELETE):從服務(wù)器刪除資源忘苛;
???????優(yōu)點(diǎn):提高交互的可見性,鼓勵(lì)單獨(dú)改善組件唱较;
???????6)支持按需代碼(Code-on-Demand):優(yōu)點(diǎn)是提高了可擴(kuò)展性扎唾;

參考鏈接:https://blog.igevin.info/posts/restful-architecture-in-general/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市南缓,隨后出現(xiàn)的幾起案子胸遇,更是在濱河造成了極大的恐慌,老刑警劉巖汉形,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纸镊,死亡現(xiàn)場離奇詭異,居然都是意外死亡概疆,警方通過查閱死者的電腦和手機(jī)逗威,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岔冀,“玉大人凯旭,你說我怎么就攤上這事。” “怎么了罐呼?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵鞠柄,是天一觀的道長。 經(jīng)常有香客問我嫉柴,道長厌杜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任计螺,我火速辦了婚禮夯尽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘危尿。我一直安慰自己呐萌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布谊娇。 她就那樣靜靜地躺著肺孤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪济欢。 梳的紋絲不亂的頭發(fā)上赠堵,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音法褥,去河邊找鬼茫叭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛半等,可吹牛的內(nèi)容都是我干的揍愁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杀饵,長吁一口氣:“原來是場噩夢啊……” “哼莽囤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起切距,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朽缎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谜悟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體话肖,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年葡幸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了最筒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔚叨,死狀恐怖是钥,靈堂內(nèi)的尸體忽然破棺而出掠归,到底是詐尸還是另有隱情,我是刑警寧澤悄泥,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布虏冻,位于F島的核電站,受9級特大地震影響弹囚,放射性物質(zhì)發(fā)生泄漏厨相。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一鸥鹉、第九天 我趴在偏房一處隱蔽的房頂上張望蛮穿。 院中可真熱鬧,春花似錦毁渗、人聲如沸践磅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽府适。三九已至,卻和暖如春肺樟,著一層夾襖步出監(jiān)牢的瞬間檐春,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工么伯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疟暖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓田柔,卻偏偏與公主長得像俐巴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子硬爆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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