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";
}
}
我們來測試請求檢視下

思考:使用路徑變量的好處?
使路徑變得更加簡潔;
獲得參數更加友善,架構會自動進行類型轉換。
通過路徑變量的類型可以限制通路參數,如果類型不一樣,則通路不到對應的請求方法,如這裡通路是的路徑是/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:
- 如果将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