一讯沈、rest api 是前后端分離最佳實(shí)踐郁岩,是開發(fā)的一套標(biāo)準(zhǔn)或者說是一套規(guī)范,不是框架。
好處:
1问慎、輕量萍摊,直接通過http,不需要額外的協(xié)議如叼,通常有post/get/put/deletec操作冰木。
2、面向資源笼恰,一目了然踊沸,具有自解釋性
3、數(shù)據(jù)描述簡單社证,一般通過json或者xml做數(shù)據(jù)通訊
rest的概括
二逼龟、REST全稱
即Representational State Transfer的縮寫。我對這個(gè)詞組的翻譯是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"追葡。
三审轮、資源(Resources)
REST的名稱"表現(xiàn)層狀態(tài)轉(zhuǎn)化"中,省略了主語辽俗。"表現(xiàn)層"其實(shí)指的是"資源"(Resources)的"表現(xiàn)層"疾渣。
所謂"資源",就是網(wǎng)絡(luò)上的一個(gè)實(shí)體崖飘,或者說是網(wǎng)絡(luò)上的一個(gè)具體信息榴捡。它可以是一段文本、一張圖片朱浴、一首歌曲吊圾、一種服務(wù),總之就是一個(gè)具體的實(shí)在翰蠢。你可以用一個(gè)URI(統(tǒng)一資源定位符)指向它项乒,每種資源對應(yīng)一個(gè)特定的URI。要獲取這個(gè)資源梁沧,訪問它的URI就可以檀何,因此URI就成了每一個(gè)資源的地址或獨(dú)一無二的識別符。
所謂"上網(wǎng)"廷支,就是與互聯(lián)網(wǎng)上一系列的"資源"互動(dòng)频鉴,調(diào)用它的URI。
四恋拍、表現(xiàn)層(Representation)
"資源"是一種信息實(shí)體垛孔,它可以有多種外在表現(xiàn)形式。我們把"資源"具體呈現(xiàn)出來的形式施敢,叫做它的"表現(xiàn)層"(Representation)周荐。
比如狭莱,文本可以用txt格式表現(xiàn),也可以用HTML格式概作、XML格式腋妙、JSON格式表現(xiàn),甚至可以采用二進(jìn)制格式仆嗦;圖片可以用JPG格式表現(xiàn),也可以用PNG格式表現(xiàn)先壕。
URI只代表資源的實(shí)體瘩扼,不代表它的形式。嚴(yán)格地說垃僚,有些網(wǎng)址最后的".html"后綴名是不必要的集绰,因?yàn)檫@個(gè)后綴名表示格式,屬于"表現(xiàn)層"范疇谆棺,而URI應(yīng)該只代表"資源"的位置栽燕。它的具體表現(xiàn)形式,應(yīng)該在HTTP請求的頭信息中用Accept和Content-Type字段指定改淑,這兩個(gè)字段才是對"表現(xiàn)層"的描述碍岔。
五、狀態(tài)轉(zhuǎn)化(State Transfer)
訪問一個(gè)網(wǎng)站朵夏,就代表了客戶端和服務(wù)器的一個(gè)互動(dòng)過程蔼啦。在這個(gè)過程中,勢必涉及到數(shù)據(jù)和狀態(tài)的變化仰猖。
互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議捏肢,是一個(gè)無狀態(tài)協(xié)議。這意味著饥侵,所有的狀態(tài)都保存在服務(wù)器端鸵赫。因此,如果客戶端想要操作服務(wù)器躏升,必須通過某種手段辩棒,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的膨疏,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"盗温。
客戶端用到的手段,只能是HTTP協(xié)議成肘。具體來說卖局,就是HTTP協(xié)議里面,四個(gè)表示操作方式的動(dòng)詞:GET双霍、POST砚偶、PUT批销、DELETE。它們分別對應(yīng)四種基本操作:GET用來獲取資源染坯,POST用來新建資源(也可以用于更新資源)均芽,PUT用來更新資源,DELETE用來刪除資源单鹿。
六掀宋、綜述
綜合上面的解釋,我們總結(jié)一下什么是RESTful架構(gòu):
(1)每一個(gè)URI代表一種資源仲锄;
(2)客戶端和服務(wù)器之間劲妙,傳遞這種資源的某種表現(xiàn)層;
(3)客戶端通過四個(gè)HTTP動(dòng)詞儒喊,對服務(wù)器端資源進(jìn)行操作镣奋,實(shí)現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。