springmvc 學習(三) RestFul 風格
概念
Restful就是一個資源定位及資源操作的風格。不是標準也不是協議,只是一種風格。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。
功能
資源:網際網路所有的事物都可以被抽象為資源
資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
分別對應 新增、 刪除、修改、查詢。
傳統方式操作資源 :通過不同的引數來實現不同的效果!方法單一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查詢,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 刪除,GET或POST
使用RESTful操作資源 :可以通過不同的請求方式來實現不同的效果!如下:請求地址一樣,但是功能可以不同!
http://127.0.0.1/item/1 查詢,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 刪除,DELETE
特點:
簡潔,高效,安全 (高效是因為這種方式會有快取)
傳統傳參的方式:url?引數=value&引數=value..
對應測試程式碼如下:http://localhost:8080/h3路徑會走到這個controller,如果沒有引數會報錯。
@RequestMapping("/h3")
public String hello3(int a,int b, Model model){
int res=a+b;
model.addAttribute("msg","go!go"+res);
return "hello";
}
執行結果:
使用RestFul 風格 風格的程式碼:客戶端訪問方式變為:http://localhost:8080/h4/a/b
方法裡的引數a,b必須使用@PathVariable註解,表示這個上面{a},{b}的值會傳入這個方法
可見訪問方式變得簡潔,而且安全,引數名沒有暴露
@RequestMapping("/h4/{a}/{b}")
public String hello4(@PathVariable int a,@PathVariable int b ,Model model){
int res=a+b;
model.addAttribute("msg","go!go"+res);
return "hello";
}
測試結果:
@RequestMapping 對映器的註解,有多個引數,其中有一個method的引數,表示了不同的請求方式,這些方式的不同可以實現方法複用性,因為只有對應method的方法,才可以請求到
為了簡便,衍生了如下幾個對映器註解,功能一致,只是請求方法不不同:分別對應了RestFul 風格的,不同請求方式~