【REST】REST是什么
REST
自從Roy Fielding博士在2000年他的博士論文中提出REST(Representational State Transfer)風(fēng)格的軟件架構(gòu)模式后,REST就基本上迅速取代了復(fù)雜而笨重的SOAP,成為Web API的標(biāo)準(zhǔn)了。
什么是Web API呢?
如果我們想要獲取某個(gè)電商網(wǎng)站的某個(gè)商品,輸入http://localhost:3000/products/123,就可以看到id為123的商品頁面,但這個(gè)結(jié)果是HTML頁面,它同時(shí)混合包含了Product的數(shù)據(jù)和Product的展示兩個(gè)部分。對(duì)于用戶來說,閱讀起來沒有問題,但是,如果機(jī)器讀取,就很難從HTML中解析出Product的數(shù)據(jù)。
如果一個(gè)URL返回的不是HTML,而是機(jī)器能直接解析的數(shù)據(jù),這個(gè)URL就可以看成是一個(gè)Web API。比如,讀取http://localhost:3000/api/products/123,如果能直接返回Product的數(shù)據(jù),那么機(jī)器就可以直接讀取。
REST就是一種設(shè)計(jì)API的模式。最常用的數(shù)據(jù)格式是JSON。由于JSON能直接被JavaScript讀取,所以,以JSON格式編寫的REST風(fēng)格的API具有簡(jiǎn)單、易讀、易用的特點(diǎn)。
編寫API有什么好處呢?由于API就是把Web App的功能全部封裝了,所以,通過API操作數(shù)據(jù),可以極大地把前端和后端的代碼隔離,使得后端代碼易于測(cè)試,前端代碼編寫更簡(jiǎn)單。
此外,如果我們把前端頁面看作是一種用于展示的客戶端,那么API就是為客戶端提供數(shù)據(jù)、操作數(shù)據(jù)的接口。這種設(shè)計(jì)可以獲得極高的擴(kuò)展性。例如,當(dāng)用戶需要在手機(jī)上購(gòu)買商品時(shí),只需要開發(fā)針對(duì)iOS和Android的兩個(gè)客戶端,通過客戶端訪問API,就可以完成通過瀏覽器頁面提供的功能,而后端代碼基本無需改動(dòng)。
當(dāng)一個(gè)Web應(yīng)用以API的形式對(duì)外提供功能時(shí),整個(gè)應(yīng)用的結(jié)構(gòu)就擴(kuò)展為:
把網(wǎng)頁視為一種客戶端,是REST架構(gòu)可擴(kuò)展的一個(gè)關(guān)鍵。
編寫REST API
REST API規(guī)范
編寫REST API,實(shí)際上就是編寫處理HTTP請(qǐng)求的async函數(shù),不過,REST請(qǐng)求和普通的HTTP請(qǐng)求有幾個(gè)特殊的地方:
REST請(qǐng)求仍然是標(biāo)準(zhǔn)的HTTP請(qǐng)求,但是,除了GET請(qǐng)求外,POST、PUT等請(qǐng)求的body是JSON數(shù)據(jù)格式,請(qǐng)求的Content-Type為application/json;
REST響應(yīng)返回的結(jié)果是JSON數(shù)據(jù)格式,因此,響應(yīng)的Content-Type也是application/json。
REST規(guī)范定義了資源的通用訪問格式,雖然它不是一個(gè)強(qiáng)制要求,但遵守該規(guī)范可以讓人易于理解。
轉(zhuǎn)自:REST - 廖雪峰的官方網(wǎng)站
總結(jié)
以上是生活随笔為你收集整理的【REST】REST是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转自CodeSheep】程序猿好书推荐
- 下一篇: 【MyBatis】MyBatis中,大于