一,简介
表现形式状态转换(其实就是访问网络资源的格式)
优点:
1、隐藏资源的访问行为,无法通过地址的值对资源是进行何种操作
2、书写简化
二,常用行为
url | 作用 |
http://localhost/users | 查询全部GET(查询) |
http://localhost/users/1 | 查询指定用户信息GET(查询) |
http://localhost/users | 添加用户信息POST(新增/保存) |
http://localhost/users | 修改用户信息PUT(修改/更新) |
http://localhost/users/1 | 删除用户信息DELETE(删除) |
可以看到有些操作发送的url是一样的,所以是通过发送请求的方式来区别不同的操作
三,基本使用
1、在方法的@RequestMapping直接中配置请求以何种方式发送,如
@RequestMapping(value="/users",method=RequestMathod.post)
2、使用这种风格会与之前传参发生冲突,为了能正确传参,需要在形参前面加上@PathVariable注解
3、上面的操作就表示参数来自访问路径,因此我们需要在路径那做相应的(@RequestMapping注解的value配置的就是访问路径)
如@RequestMapping(value="/users/{id}",method=RequestMethod.POST)
注意名字要与参数相同
四,应用
1、当发送请求超过一个时,以json格式为主(@RequestMapping需要换成@RequestBody)
2、如果发送json数据,形参使用的注解应该有@PathVariable变成@RequestParam
五,简化
1、问题:
@RequestMapping(value="/users/{id}",method=RequestMethod.POST)
这样写太麻烦了
2、解决:
可以用@PostMapping("/users/{id}"),以此类推还有@GetMapping、@DeleteMapping、@PutMapping
3、补充:
①如果该控制器的所有方法配置的访问路径相同,可以像之前一样在类注解的@RequestMapping配置一下,这样下面的路径就可以简化了
②如果控制器的所有方法请求发送的方式全是post可以把@ResponseBody放在类上成为类注解
③如果这样的话@ResponseBody与@Controller注解可以合并成@RestController