溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

RESTfule風(fēng)格怎么應(yīng)用

發(fā)布時(shí)間:2022-03-23 14:22:56 來源:億速云 閱讀:157 作者:iii 欄目:web開發(fā)

這篇文章主要介紹“RESTfule風(fēng)格怎么應(yīng)用”,在日常操作中,相信很多人在RESTfule風(fēng)格怎么應(yīng)用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”RESTfule風(fēng)格怎么應(yīng)用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

什么是REST?

  REST(英文:Representational State Transfer,簡稱REST,意思:表述性狀態(tài)轉(zhuǎn)換,描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),比如web應(yīng)用)。

  它是一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件,它主要用于客戶端和服務(wù)端交互類的軟件?;谶@個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡介,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。

  它本身并沒有什么使用性,其核心價(jià)值在于如何設(shè)計(jì)出符合REST風(fēng)格的網(wǎng)絡(luò)接口。

什么是RESTful?

  REST:指的是一組架構(gòu)約束條件和原則。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful。

RESTful的特性

  資源(Resources):網(wǎng)絡(luò)上的一個(gè)實(shí)體,或者說是網(wǎng)絡(luò)上的一個(gè)具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個(gè)具體的存在??梢杂靡粋€(gè)URI(統(tǒng)一資源定位符)指向它,每種資源對(duì)應(yīng)一個(gè)特性的URI。要獲取這個(gè)資源,訪問它的URI就可以,因此URI即為每一個(gè)資源的獨(dú)一無二的識(shí)別符。

  表現(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ā)出一個(gè)請(qǐng)求,就代表了客戶端和服務(wù)器的一次交互過程。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é)議里面,四個(gè)表示操作方式的動(dòng)詞:GET、POST、PUT、DELETE。他們分別對(duì)應(yīng)四種基本操作:GET用來獲取資源,POST用來新建資源,PUT用來更新資源,DELETE用來刪除資源。

如何設(shè)計(jì)RESTful應(yīng)用程序的API?

  路徑設(shè)計(jì):數(shù)據(jù)庫設(shè)計(jì)完畢之后,基本上就可以確定有哪些資源要進(jìn)行操作,相對(duì)應(yīng)的路徑也可以設(shè)計(jì)出來。

  動(dòng)詞設(shè)計(jì):也就是針對(duì)資源的具體操作類型,有HTTP動(dòng)詞表示,常用的HTTP動(dòng)詞如下:POST、DELETE、PUT、GET

RESTful示例

  1. /account/1 HTTP GET:得到id=1的account

  2. /account/1 HTTP DELETE:刪除id=1的account

  3. /account/1 HTTP PUT:更新id=1的account

SpringMvc對(duì)RESTful的支持

RESTful的URL路徑變量

URL-PATTERN:設(shè)置為/,方便攔截RESTful請(qǐng)求。

@PathVariable:可以解析出來URL中的模板變量({id}/{name})

URL:http://localhost:8080/ssm/cyb/item/1/chenyanbin


Controller層:
@RequestMapping("{id}/{name}")
@ResponseBody
public Item queryItemById(@PathVariable Integer id,@PathVariable String name){
.............
}

RESTfule風(fēng)格怎么應(yīng)用

RESTful的CRUD

@RequestMapping:通過設(shè)置method屬性的CRUD,可以將同一個(gè)URL映射到不同的HandlerMethod方法上。

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解同@RequestMapping注解的method屬性設(shè)置。

RESTful的資源表述

RESTful服務(wù)中一個(gè)重要的特性就是一種資源可以有多種表現(xiàn)形式,在SpringMvc中可以使用ContentNegotiatingManager這個(gè)內(nèi)容協(xié)商管理器來實(shí)現(xiàn)這種方式。

內(nèi)容協(xié)商的方式有三種

  1. 擴(kuò)展名,比如.json表示我要JSON格式數(shù)據(jù)、.xml表示我要xml格式數(shù)據(jù)

  2. 請(qǐng)求參數(shù):默認(rèn)是“format”

  3. 請(qǐng)求頭設(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)資源訪問<mvc:resources>

在Springmvc.xml文件中,使用mvc:resources標(biāo)簽,具體如下:

<!-- 當(dāng)DispatcherServlet配置為/來攔截請(qǐng)求的時(shí)候,需要配置靜態(tài)資源的訪問映射 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
....
....
....
....

RESTfule風(fēng)格怎么應(yīng)用

SpringMvc會(huì)把mapping映射到ResourceHttpRequestHandler,這樣靜態(tài)資源在經(jīng)過DispatcherServlet轉(zhuǎn)發(fā)時(shí)就可以找到對(duì)應(yīng)的Handler了。

到此,關(guān)于“RESTfule風(fēng)格怎么應(yīng)用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI