文章目錄
-
-
-
- 1、概念
- 2、功能
- 3、傳統方式操作資源
- 4、使用RestFul操作資源
- 5、傳統方式的示例
- 6、RestFul示例
- 7、總結
-
-
1、概念
Restful就是一個資源定位及資源操作的風格。不是标準也不是協定,隻是一種風格。基于這個風格設計的軟體可以更簡潔,更有層次,更易于實作緩存等機制。
2、功能
- 資源:網際網路所有的事物都可以被抽象為資源
- 資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
- 分别對應添加、删除、修改、查詢。
3、傳統方式操作資源
- http://127.0.0.1/item/queryltem.action?id=1 查詢,GET
- http://127.0.0.1/item/saveltem.action 新增,POST
- http://127.0.0.1/item/updateltem.action 更新,POST
- http://127.0.0.1/item/deleteltem.action?id=1 删除,GET或POST
4、使用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
5、傳統方式的示例
- 控制層:RestFulController類
@Controller public class RestFulController { //傳統的url:http://localhost:8080/add?a=1&b=2 @RequestMapping("/add") public String test(int a, int b, Model model){ int res = a+b; model.addAttribute("msg","結果為"+res); return "test"; } }
- 視圖層:test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html>
- 測試結果:位址欄輸入傳統的url:http://localhost:8080/add?a=1&b=2
結果為3
6、RestFul示例
- 控制層:RestFulController類
- 方式一:@RequestMapping("/add2/{a}/{b}")
//RestFul:http://localhost:8080/add2/1/2 @RequestMapping("/add2/{a}/{b}") //@PathVariable 讓方法參數的值對應綁定到一個URL模闆變量 public String test1(@PathVariable int a,@PathVariable int b, Model model){ int res = a+b; model.addAttribute("msg","結果為"+res); return "test"; }
- 方式二:使用method屬性指定請求類型
@RequestMapping(value="/add2/{a}/{b}",method = RequestMethod.GET) public String test2(@PathVariable int a,@PathVariable int b, Model model){ int res = a+b; model.addAttribute("msg","結果為"+res); return "test"; }
- 方式三:使用組合注解@GetMapping
@GetMapping("/add2/{a}/{b}") public String test3(@PathVariable int a,@PathVariable int b, Model model){ int res = a+b; model.addAttribute("msg","結果為"+res); return "test"; }
- 方式一:@RequestMapping("/add2/{a}/{b}")
- 視圖層test.jsp同上
- 測試結果:位址欄輸入RestFul風格的url:http://localhost:8080/add2/1/2
結果為3
7、總結
- 使用路徑變量的好處
- 使路徑變得更加簡潔;
- 獲得參數更加友善,架構會自動進行類型轉換。
- 通過路徑變量的類型可以限制通路參數,如果類型不一樣,則通路不到對應的請求方法,如這裡通路是的路徑是/add/1/2,則路徑與方法不比對,而不會是參數轉換失敗。
- 使用method屬性指定請求類型
- 用于限制請求的類型,可以收窄請求範圍。指定請求謂詞的類型如GET, POST, HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE等
- 所有的位址欄請求預設都會是HTTP GET類型的
- 方法級别的注解變體有如下幾個:組合注解
@GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping
- @GetMapping是一個組合注解,它所扮演的是@RequestMapping(method =RequestMethod.GET)的一個快捷方式