restful 是⼀種 web 軟體架構⻛格,它不是標準也不是協議,它倡導的是⼀個資源定位及資源操作的⻛格。
什麼是 rest:
rest(英⽂: representational state transfer,簡稱 rest)描述了⼀個架構樣式的⽹絡系統, ⽐如web 應⽤程式。它⾸次出現在 2000 年 roy fielding 的博⼠論⽂中,他是 http 規範的主要編寫者之⼀。在⽬前主流的三種 web 服務互動⽅案中, rest 相⽐於 soap(****** object access protocol,簡單物件訪問協議)以及 xml-rpc 更加簡單明瞭,⽆論是對 url 的處理還是對 payload 的編碼,
rest 都傾向於⽤更加簡單輕量的⽅法設計和實現。值得注意的是 rest 並沒有⼀個明確的標準,⽽更像是⼀種設計的⻛格。
它本身並沒有什麼實⽤性,其核⼼價值在於如何設計出符合 rest ⻛格的⽹絡接⼝。
它結構清晰、符合標準、易於理解、擴充套件⽅便,所以正得到越來越多⽹站的採⽤。
資源(resources):⽹絡上的⼀個實體,或者說是⽹絡上的⼀個具體資訊。
它可以是⼀段⽂本、⼀張圖⽚、⼀⾸歌曲、⼀種服務,總之就是⼀個具體的存在。可以⽤⼀個 uri(統⼀資源定位符)指向它,每種資源對應⼀個特定的 uri 。要獲取這個資源,訪問它的 uri 就可以,因此uri 即為每⼀個資源的獨⼀⽆⼆的識別符。
表現層(representation):把資源具體呈現出來的形式,叫做它的表現層 (representation)。⽐如,⽂本可以⽤ txt 格式表現,也可以⽤ html 格式、 xml 格式、 json 格式表現,甚⾄可以採⽤⼆進製格式。
狀態轉化(state transfer):每發出⼀個請求,就代表了客戶端和伺服器的⼀次互動過程。
http 協議,是⼀個⽆狀態協議,即所有的狀態都儲存在伺服器端。因此,如果客戶端想要操作伺服器, 必須通過某種手段,讓伺服器端發生「狀態轉化」(state transfer)。而這種轉化是建⽴在表現層之上的,所以就是 「 表現層狀態轉化」 。具體說, 就是 http 協議⾥⾯,四個表示操作⽅式的動詞:get 、 post 、 put 、 delete 。它們分別對應四種基本操作: get ⽤來獲取資源, post ⽤來新建資源, put ⽤來更新資源, delete ⽤來刪除資源。
rest是⼀個url請求的⻛格,基於這種⻛格設計請求的url沒有rest的話,原有的url設計:
url中定義了動作(操作),引數具體鎖定到操作的是誰。
有了rest⻛格之後,rest中,認為互聯⽹中的所有東⻄都是資源,既然是資源就會有⼀個唯⼀的uri標識它,代表它。
用rest風格來表示:http://localhost:8080/user/3代表的是id為3的那個⽤戶記錄(資源)
鎖定資源之後如何操作它呢?常規操作就是增刪改查
根據請求⽅式不同,代表要做不同的操作
get 查詢,獲取資源
post 增加,新建資源
put 更新
delete 刪除資源
rest⻛格帶來的直觀體現:就是傳遞引數⽅式的變化,引數可以在uri中了
/account/1 http get :得到 id = 1 的 account
/account/1 http delete:刪除 id = 1 的 account
/account/1 http put:更新 id = 1 的 account
前端頁面
後台handler⽅法測試⽤例: springmvc對restful⻛格url的⽀持
rest_get測試
後端:
/*
* restful get /demo/handle/15
*/public modelandview handleget(@pathvariable("id") integer id)
/** restful post /demo/handle
*/public modelandview handlepost(string username)
/** restful put /demo/handle/15/lisi
*/public modelandview handleput(@pathvariable("id") integer id,@pathvariable("name") string username)
/** restful delete /demo/handle/15
*/public modelandview handledelete(@pathvariable("id") integer id)
中文亂碼問題:
web.xml裡面配置springmvc過濾器:
encoding
org.springframework.web.filter.characterencodingfilter
encoding
utf-8
/*
測試:
如果是get請求出現亂碼,則需要修改tomcat下server.xml的配置:
配置controller中能夠處理put請求的過濾器,在web.xml中配置:
/*通過請求方式進行區分,而不是通過uri,相同的uri不同的處理。
REST架構風格
rest風格通過uri訪問得到的資訊是自我描述的,包括了資訊本身和表示方式 html,xml,資料流等 資訊的描述是採用最通用的協議 http 超文字轉換協議 來進行的.客戶端根據資訊的表示解析和展示資訊本身.而互動是通過http的幾個基本操作 get,put,post,delete 來實現.一些看...
REST設計風格
2000年,roy thomas fielding博士在他的博士 architectural styles and the design of network based software architectures 中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇 中進行了概括...
REST架構風格
rest 即representational state transfer.資源 表現層狀態轉化,是目前最流行的一種網際網路軟體架構 http協議裡面,四哥表示操作方式的動詞 get post put delete。他們分別對應四種基本操作 get用來獲取資源 post用來新建資源 put用來更新資...