SpringMVC——Restful風格

RestFul風格

概念java

​ Restful就是一個資源定位及資源操做的風格,不是標準也不是協議。基於這個風格設計的軟件能夠更簡潔,更有層次,更易於實現緩存等機制。緩存

REST 的基本原理包括:restful

  • 系統上的一切對象都要抽象爲資源;app

  • 每一個資源對應惟一的資源標識(URI);ide

  • 對資源的操做不能改變資源標識(URI)自己;學習

  • 全部的操做都是無狀態的等等。測試

    【這裏備註一下URL和URI】url

URI,是uniform resource identifier,統一資源標識符,用來惟一的標識一個資源。設計

URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源。rest

使用Restful操做資源:能夠經過不一樣的請求方式來實現不一樣的效果,以下,請求地址同樣,但對應的業務能夠是不一樣的!

學習測試

  1. 新建一個類RestFulController

    @Controller
    public class RestFulController{
        
    }
  2. 在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)的組合

相關文章
相關標籤/搜索