知己海記憶體
2016-11-30 15:15
rest即表述性狀態傳遞(英文:representational state transfer,簡稱rest)是roy fielding博士在2023年他的博士**中提出來的一種軟體架構風格。
它是一種針對網路應用的設計和開發方式,可以降低開發的複雜性,提高系統的可伸縮性。
目前在三種主流的web服務實現方案中,因為rest模式的web服務與複雜的soap和xml-rpc對比來講明顯的更加簡潔,越來越多的web服務開始採用rest風格設計和實現。
例如,amazon.com提供接近rest風格的web服務進行圖書查詢;雅虎提供的web服務也是rest風格的。
①理解本真的rest架構風格:
②深入淺出rest:
2.rest風格是什麼?
①rest:即 representational state transfer。(資源)表現層狀態轉化。是目前最流行的一種網際網路軟體架構。它結構清晰、符合標準、易於理解、擴充套件方便,所以正得到越來越多**的採用
·資源(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用來刪除資源。
②url風格
示例:/order/1 httpget:得到 id = 1 的 order
/order/1 httpdelete:刪除 id = 1的 order
/order/1 httpput:更新id = 1的 order
/order httppost:新增 order
瀏覽器 form 表單只支援 get 與 post 請求,而delete、put 等 method 並不支援,
spring3.0 新增了乙個過濾器,可以將這些請求轉換為標準的 http 方法,使得支援 get、post、put 與 delete 請求。
3.實驗**
①配置hiddenhttpmethodfilter過濾器
* 1.測試rest風格的 get,post,put,delete 操作
* 以crud為例:
* 新增: /order post
* 修改: /order/1 put update?id=1
* 獲取: /order/1 get get?id=1
* 刪除: /order/1 delete delete?id=1
* 2.如何傳送put請求或delete請求?
* ①.配置hiddenhttpmethodfilter
* ②.需要傳送post請求
* ③.需要在傳送post請求時攜帶乙個 name="_method"的隱含域,值為put或delete
* 3.在springmvc的目標方法中如何得到id值呢?
* 使用@pathvariable註解
public string testrestget(@pathvariable(value="id") integer id){
system.out.println("testrestget id="+id);
return "success";
public string testrestpost(){
system.out.println("testrestpost");
return "success";
public string testrestput(@pathvariable("id") integer id){
system.out.println("testrestput id="+id);
return "success";
public string testrestdelete(@pathvariable("id") integer id){
system.out.println("testrestdelete id="+id);
return "success";
③請求鏈結
testrest get
4.hiddenhttpmethodfilter過濾器原始碼分析
l為什麼請求隱含引數名稱必須叫做」_method」
——method定義
SpringMVC REST 風格靜態資源訪問配置
1 在web.xml中使用預設servlet處理靜態資源,缺點是如果靜態資源過多,則配置量會比較大,一旦有遺漏,則會造成資源無法正常顯示或404錯誤。2 在springmvc配置檔案中配置 我的所有靜態資源都在webcontent static 之下,下有如下目錄webcontent static ...
設計模式 設計原則與設計模式
一切設計都為了 的可擴充套件性和可讀性,都為了應對變化!我們是基於設計原則的思想,來選擇設計模式去實現,可讀,可擴充套件的目標!核心設計思想 對擴充套件開放,對修改關閉。含義 抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。優點 便於擴充套件 核心設計思想 單個方法或單個類或單...
設計模式 設計模式
物件導向程式設計 oop 的基本概念有 封裝,抽象,繼承,多型等,如何開發出可復用的物件導向軟體一直困擾著軟體開發人員。可復用的物件導向技術包括類的繼承,物件的組合和引數化型別 generic gof的巨著 設計模式 總結出可復用的物件導向的23個設計模式,並且歸類成 建立型模式,結構型模式和行為型...