springboot-web-请求处理-restful风格请求
原先的requestmapping以及拓展的
- @GetMapping
- @PostMapping
- @PutMapping 等价于(@RequestMapping(value = "xxx",method = RequestMethod.PUT))
- @DeleteMapping 等价于(@RequestMapping(value = "xxx",method = RequestMethod.DELETE))
代码如下:
@GetMapping("/user")
public String getUser(){
return "GET-张三";
}
@PostMapping("/user")
public String saveUser(){
return "POST-张三";
}
@RequestMapping(value = "/user",method = RequestMethod.PUT)
public String putUser(){
return "PUT-张三";
}
@RequestMapping(value = "/user",method = RequestMethod.DELETE)
public String deleteUser(){
return "DELETE-张三";
}
前台请求页面
因为我们前台请求也的form表单只有get 和 post两种请求。所以我们目前只能实现get 是get提交,post,delete,put都是post提交
<form action="/user" method="get"> <input value="REST-GET提交" type="submit" /> </form> <form action="/user" method="post"> <input value="REST-POST提交" type="submit" /> </form> <form action="/user" method="post"> <input value="REST-DELETE 提交" type="submit"/> </form> <form action="/user" method="post"> <input value="REST-PUT提交"type="submit" /> <form>
springboot中提供了核心Filter;HiddenHttpMethodFilter(post请求)
这个可以给我们提供隐藏域【_method】
1.修改配置文件,开启这个HiddenHttpMethodFilter
spring: mvc: hiddenmethod: filter: enabled: true
2.我们改造前台页面
我们给隐藏域_method赋值 并隐藏

3.后台请求@RequestMapping注解就可以识别了
4.Rest原理(表单提交要使用REST的时候)
表单提交会带上_method=PUT
请求过来被HiddenHttpMethodFilter拦截
请求是否正常,并且是POST
获取到_method的值。
兼容以下请求;PUT.DELETE.PATCH
原生request(post),包装模式requesWrapper重写了getMethod方法,返回的是传入的值。
过滤器链放行的时候用wrapper。以后的方法调用getMethod是调用requesWrapper的。
5.Rest使用客户端工具。
如PostMan可直接发送put、delete等方式请求
6.

浙公网安备 33010602011771号