概念java
Restful就是一個資源定位及資源操做的風格,不是標準也不是協議。基於這個風格設計的軟件能夠更簡潔,更有層次,更易於實現緩存等機制。緩存
REST 的基本原理包括:restful
系統上的一切對象都要抽象爲資源;app
每一個資源對應惟一的資源標識(URI);ide
對資源的操做不能改變資源標識(URI)自己;學習
全部的操做都是無狀態的等等。測試
【這裏備註一下URL和URI】url
URI,是uniform resource identifier,統一資源標識符,用來惟一的標識一個資源。設計
URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源。rest
使用Restful操做資源:能夠經過不一樣的請求方式來實現不一樣的效果,以下,請求地址同樣,但對應的業務能夠是不一樣的!
http://localhost:8080/commit/ 新增,POST
http://localhost:8080/commit/1 刪除,DELETE
學習測試
新建一個類RestFulController
@Controller public class RestFulController{ }
在SpringMVC中可使用@PathVariable註解,讓方法參數的值對應綁定到一個URL模板變量上。
@Controller public class RestFulController { //映射訪問路徑 @RequestMapping("/commit/{p1}/{p2}") public String index(@PathVariable int p1, @PathVariable int p2, Model model){ int res = p1 + p2; //SpringMvc會自動實例化一個Model對象用於向視圖傳值 model.addAttribute("msg","結果爲"+res); //返回視圖位置 return "test"; } }
測試結果:
能夠經過method約束請求的類型:
能夠指定請求的類型如GET、POST、PUT、DELETE等;
測試,咱們將method指定爲POST:
//映射訪問路徑 @RequestMapping(value = "/commit/{p1}/{p2}",method = RequestMethod.POST)
再次訪問該映射時,會報405錯誤——Method Not Allowed:
由於默認的請求方式爲get,而該url約束了請求方式只能爲POST;
將POST修改成GET後則能正常訪問:
//映射訪問路徑 @RequestMapping(value = "/commit/{p1}/{p2}",method = RequestMethod.GET)
這樣一來,即便是同一個請求地址,當HTTP請求方式不一樣時,能夠對應不一樣的業務,以下
對於一樣的請求地址/book/id,GET請求方式是根據ID查詢,而DELETE請求方式是根據ID刪除:
//根據ID查詢書籍 @GetMapping("/book/{id}") public String toUpdateBook(@PathVariable Integer id, Model model){ Books books = bookService.queryBookById(id); model.addAttribute("qBook",books); return "queryBook"; } //根據ID刪除書籍 @DeleteMapping("/book/{id}") public String deleteBook(@PathVariable Integer id){ System.out.println("deleteBookId=>"+id); bookService.deleteBook(id); return "redirect:/books/allBooks"; }
小結:
SpringMVC的@RestMapping註解可以處理HTTP請求的方法,如GET、POST、PUT、DELETE以及PATCH;
全部的地址欄請求默認都會是HTTP GET;
方法級別的註解變體有以下幾個:組合註解
@GetMapping @PostMapping @PutMapping @PatchMapping @DeleteMapping
@GetMapping是一個組合註解
它表明的是@RequestMapping(method = RequestMethod.GET)的組合