REST
(英文:Representational State Transfer,簡稱REST
,意思:表述性狀態(tài)轉(zhuǎn)換,描述了一個架構(gòu)
樣式的網(wǎng)絡(luò)系統(tǒng),比如web應(yīng)用)。它是一種軟件架構(gòu)風(fēng)格、設(shè)計風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計原則和約束條件,它主要用于
客戶端和服務(wù)端
交互類的軟件。基于這個風(fēng)格設(shè)計的軟件可以更簡介,更有層次,更易于實現(xiàn)緩存等機(jī)制。它本身并沒有什么使用性,其核心價值在于如何設(shè)計出符合REST風(fēng)格的網(wǎng)絡(luò)接口。
什么是RESTful?REST
:指的是一組架構(gòu)約束條件和原則。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計就是RESTful
。RESTful的特性資源(Resources)
:網(wǎng)絡(luò)上的一個實體,或者說是網(wǎng)絡(luò)上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個具體的存在??梢杂靡粋€URI(統(tǒng)一資源定位符)指向它,每種資源對應(yīng)一個特性的URI。要獲取這個資源,訪問它的URI就可以,因此URI即為每一個資源的獨一無二的識別符。表現(xiàn)層(Representation)
:把資源具體呈現(xiàn)出來的形式,叫做它的表現(xiàn)層(Representation)。比如,文本可以用txt格式表現(xiàn),也可以用HTML格式、XML格式、JSON格式表現(xiàn),甚至可以采用二進(jìn)制格式。狀態(tài)轉(zhuǎn)換(State Transfer)
:每發(fā)出一個請求,就代表了客戶端和服務(wù)器的一次交互過程。HTTP協(xié)議,是一個無狀態(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é)議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE
。他們分別對應(yīng)四種基本操作:GET用來獲取資源,POST用來新建資源,PUT用來更新資源,DELETE用來刪除資源。如何設(shè)計RESTful應(yīng)用程序的API?路徑設(shè)計
:數(shù)據(jù)庫設(shè)計完畢之后,基本上就可以確定有哪些資源要進(jìn)行操作,相對應(yīng)的路徑也可以設(shè)計出來。動詞設(shè)計
:也就是針對資源的具體操作類型,有HTTP動詞表示,常用的HTTP動詞如下:POST、DELETE、PUT、GETRESTful示例/account/1 HTTP GET:得到id=1的account/account/1 HTTP DELETE:刪除id=1的account/account/1 HTTP PUT:更新id=1的accountSpringMvc對RESTful的支持RESTful的URL路徑變量URL-PATTERN
:設(shè)置為/
,方便攔截RESTful請求。@PathVariable
:可以解析出來URL中的模板變量({id}/{name}
)URL:http://localhost:8080/ssm/cyb/item/1/chenyanbinController層:@RequestMApping("{id}/{name}")@ResponseBodypublic Item queryItemById(@PathVariable Integer id,@PathVariable String name){.............}
如圖
@RequestMapping
:通過設(shè)置method
屬性的CRUD
,可以將同一個URL映射
到不同
的HandlerMethod
方法上。@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
注解同@RequestMapping注解的method屬性設(shè)置。RESTful的資源表述RESTful
服務(wù)中一個重要的特性就是一種資源
可以有多種表現(xiàn)形式
,在SpringMvc中可以使用ContentNegotiatingManager
這個內(nèi)容協(xié)商管理器來實現(xiàn)這種方式。內(nèi)容協(xié)商的方式有三種擴(kuò)展名
,比如.json表示我要JSON格式數(shù)據(jù)、.xml表示我要xml格式數(shù)據(jù)請求參數(shù)
:默認(rèn)是“format”請求頭設(shè)置Accept參數(shù)
,比如設(shè)置Accept為application/json表示要JSON格式數(shù)據(jù)現(xiàn)在一般RESTful風(fēng)格響應(yīng)的數(shù)據(jù)一般都是
JSON
格式,所以一般也不使用內(nèi)容協(xié)商管理器,直接使用@ResponseBody
注解將數(shù)據(jù)按照J(rèn)SON格式返回靜態(tài)資源訪問在Springmvc.xml文件中,使用mvc:resources標(biāo)簽,具體如下:
如圖
SpringMvc會把mapping映射到
ResourceHttpRequestHandler
,這樣靜態(tài)資源在經(jīng)過DispatcherServlet轉(zhuǎn)發(fā)時就可以找到對應(yīng)的Handler了。1.《restful風(fēng)格 什么是RESTful?RESTfule風(fēng)格又是啥?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《restful風(fēng)格 什么是RESTful?RESTfule風(fēng)格又是啥?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/keji/346872.html