在Spring Boot中请求类型的说明(@ResquestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping)这篇文章中我们谈了RequestMapping的几个改进版本的用法。本文主要针对RequesMapping本身的某些特性进行说明。
- RequestMapping是什么
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
- RequestMapping可以做那些事
- 设置请求路径(value)
- 设置请求类型(method)
- 指定处理请求的提交内容类型(consumes)
- 制定返回类型(produces)
- 指定request中必须包含某些参数值是,才让该方法处理(params)
- 指定request中必须包含某些指定的header值,才能让该方法处理请求(headers)
设置请求路径和请求类型(method)
@RequestMapping(value="/{value}", method = RequestMethod.GET)
public void fun1(@PathVariable String value, Model model) {
//...
}
@RequestMapping(value="/new", method = RequestMethod.GET)
public void fun2() {
//.....
}
注:value的值常见的可以是某一具体值,或者某一变量(PathVariable)。也可以是正则表达式(少见)
设置处理请求的提交类型和返回类型
@Controller
@RequestMapping(value = "/user", method = RequestMethod.POST, consumes="application/json")
public void addUser(@RequestBody User user) {
// ......
}
注;仅处理提交的类型为application/json格式的
@Controller
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public void getUser(@PathVariable String id) {
// ......
}
produces第一种使用,返回json数据,下边的代码可以省略produces属性,因为我们已经使用了注解@responseBody就是返回值是json数据:
produces第二种使用,返回json数据的字符编码为utf-8.:
produces = {"application/json;charset=UTF-8"}
指定包含的参数
// 该方法将接收 /user/login 发来的请求,且请求参数必须为 username=kolbe&password=123456
@RequestMapping(path = "/login", params={"username=kolbe","password=123456"})
public String login() {
return "success";
}
//@RequestMapping 中可以使用 params 来限制请求参数,来实现进一步的过滤请求
@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.haoeasy.cn")
public void findUser(@PathVariable String id) {
// .......
}
@RequestMapping注解折配置headers属性,也就是通过headers属性来配置请求头信息,对请求进行进一步过滤