1. 程式人生 > 其它 >springmvc 學習(三) RestFul 風格

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 風格的,不同請求方式~