天天看點

springmvc-RestFul 風格概念功能學習測試使用method屬性指定請求類型小結:

RestFul 風格

  • 概念
  • 功能
    • 傳統方式操作資源 :
    • 使用RESTful操作資源 :
  • 學習測試
  • 使用method屬性指定請求類型
  • 小結:

概念

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

學習測試

在建立一個類 RestFulController

@Controller
public class RestFulController {
}
在Spring MVC中可以使用  @PathVariable 注解,讓方法參數的值對應綁定到一個URI模闆變量上。

@Controller
public class RestFulController {
 
    //映射通路路徑
    @RequestMapping("/commit/{p1}/{p2}")
    public String index(@PathVariable int p1, @PathVariable int p2, Model model){
        
        int result = p1+p2;
        //Spring MVC會自動執行個體化一個Model對象用于向視圖中傳值
        model.addAttribute("msg", "結果:"+result);
        //傳回視圖位置
        return "test";
        
    }
    
}
           

我們來測試請求檢視下

springmvc-RestFul 風格概念功能學習測試使用method屬性指定請求類型小結:

思考:使用路徑變量的好處?

使路徑變得更加簡潔;

獲得參數更加友善,架構會自動進行類型轉換。

通過路徑變量的類型可以限制通路參數,如果類型不一樣,則通路不到對應的請求方法,如這裡通路是的路徑是/commit/1/a,則路徑與方法不比對,而不會是參數轉換失敗。

我們來修改下對應的參數類型,再次測試

//映射通路路徑
@RequestMapping("/commit/{p1}/{p2}")
public String index(@PathVariable int p1, @PathVariable String p2, Model model){
 
    String result = p1+p2;
    //Spring MVC會自動執行個體化一個Model對象用于向視圖中傳值
    model.addAttribute("msg", "結果:"+result);
    //傳回視圖位置
    return "test";
 
}
           

使用method屬性指定請求類型

用于限制請求的類型,可以收窄請求範圍。指定請求謂詞的類型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等

我們來測試一下:

  • 增加一個方法
//映射通路路徑,必須是POST請求
@RequestMapping(value = "/hello",method = {RequestMethod.POST})
public String index2(Model model){
    model.addAttribute("msg", "hello!");
    return "test";
}
           
  • 我們使用浏覽器位址欄進行通路預設是Get請求,會報錯405:
springmvc-RestFul 風格概念功能學習測試使用method屬性指定請求類型小結:
  • 如果将POST修改為GET則正常了;
//映射通路路徑,必須是Get請求
@RequestMapping(value = "/hello",method = {RequestMethod.GET})
public String index2(Model model){
    model.addAttribute("msg", "hello!");
    return "test";
}
           

小結:

Spring MVC 的 @RequestMapping 注解能夠處理 HTTP 請求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

所有的位址欄請求預設都會是 HTTP GET 類型的。

方法級别的注解變體有如下幾個:組合注解

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
           

@GetMapping 是一個組合注解,平時使用的會比較多!

它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一個快捷方式。

B站位址:https://space.bilibili.com/95256449