关于@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")