1. 直接把请求参数写在方法的形参中
@RequestMapping("/fun1")
public Book fun1(String name, Long id){
log.info("{} {}",id,name);
Book book=new Book(id, name);
return book;
}

2. 封装一个bean直接来接收
@RequestMapping("/fun2")
public Book fun2(Book book){
log.info("book={}",book);
return book;
}

3. 原生的HttpServletRequest接收
- 同时适用get、post方法
- 是整个请求,可以获取到所有的数据
- 可以和其他的注解配合适用
- HttpServletRequest、HttpServletResponse都是内置对象,可以使用
@RequestMapping("/fun3")
public Book fun3(HttpServletRequest request){
log.info("{} {}",request.getParameter("id"),request.getParameter("name"));
return new Book(Long.parseLong(request.getParameter("id")),request.getParameter("name"));
}
Map<String, String[]> map = request.getParameterMap();
String pathInfo = request.getPathInfo();
ServletInputStream inputStream = request.getInputStream();

4. @PathVariable获取rest风格路径参数
@RequestMapping("/fun4/{id}/{name}")
public Book fun4(@PathVariable long id,@PathVariable String name){
log.info("{} {}",id,name);
Book book=new Book(id, name);
return book;
}

5. @RequestParam绑定请求参数到方法形参
@RequestMapping("/fun6")
public Book fun6(@RequestParam("name") String name,
@RequestParam("id") Long id){
log.info("{} {}",id,name);
Book book=new Book(id, name);
return book;
}
当请求参数username或者password不存在时会有异常发生,可以通过设置属性required=false解决
@RequestParam(value="username", required=false)

6. @RequestBody绑定请求参数到方法形参
- 只能Post方法
- 参数必须Json字符串
- Body只能有一个
@RequestMapping("/fun7")
public Book fun7(@RequestBody Book book){
log.info("book={}",book);
return book;
}

7. @RequestHeader
- RequestHeader主要用来获取请求当中的请求头
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader("user-id") String userId){
}
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader Map<String, String> headers){
}
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader HttpHeaders headers){
}
8. @CookieValue
- 使用@CookieValue注解来获得指定的 Cookie 的值。
@GetMapping("park/getCookie")
public String getCookieValue(@CookieValue("jid") String jId) {
System.out.println(jId);
return "success";
}