關於@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的理解
一、前言
在Spring4.3中引入了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping},其中@PatchMapping是對put方式的一種補充,put可以是更新,但是是對整體的更新,patch是對局部的更新
二、冪等性
一次和多次請求某一個資源對於資源本身具有同樣的結果。也就是任意多次執行對資源本身產生的影響與執行一次的影響相同
冪等不僅僅只是一次請求對資源沒有副作用(比如數據庫查詢操作)
冪等包括第一次請求的時候對數據庫產生了副作用,但是之后多次執行這個請求都不會對資源再產生副作用
冪等關注的是以后的多次請求是否對資源產生副作用,而不關注結果
SELECT col1 FROM tab1 WHERE col2 = 2, 無論執行多少次都不會改變狀態,是冪等的
UPDATE tab1 SET col1 = 1 WHERE col2 = 2, 無論執行成功多少次狀態都是一致的,因此也是冪等
UPDATE tab1 SET col1 = col1 + 1 WHERE col2 = 2, 每次執行結果都會變化,不是冪等
http協議明確規定,put、get、delete請求都是具有冪等性的,而post為非冪等性的。所以一般插入新數據的時候使用post方法,更新數據庫時用put方法
三、@GetMapping
處理get請求,傳統的RequestMapping來編寫應該是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)。新方法可簡寫為:@GetMapping("/get/{id}")
四、@PostMapping
處理post請求,傳統的RequestMapping來編寫應該是@RequestMapping(value = “/get”, method = RequestMethod.POST)。新方法可簡寫為:@PostMapping("/get")