如何使用?
1. @PathVariable
(A). 用于将请求URI中的模板变量,映射到方法的参数上,默认情况下,参数名必须要和路径上的变量名一样,@PathVariable注解允许我们使用value或name属性来给参数取一个别名;
@GetMapping(value = "/{advertId}")
public AjaxResult getInfo(@PathVariable("advertId") Long advertId) {...}
@GetMapping("/users/{name}/edit")
public String edit(@PathVariable("name") String userName) {...}
(B). 如果参数是可选的,则可以在@PathVariable中设置require = false;
@GetMapping("/list/exclude/{deptId}")
public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {...}
(C). 模板变量名需要使用{ }进行包裹,如果方法的参数名与URI模板变量名一致,在@PathVariable中可以省略别名的定义;
@GetMapping("/info/{username}")
public R<LoginUser> info(@PathVariable String username) {...}
2. @RequestParam
(A). 用于将URI中的请求参数,映射到方法的参数上,如果参数是通过list?id=102&name=rocky传递过来的,可以通过@RequestParam来获取。
@PostMapping("/logininfor")
R<Boolean> saveLogininfor(@RequestParam("username") String username,
@RequestParam("status") String status,
@RequestParam("message") String message){...}
(B). 如果传递的参数为空,可以通过defaultValue设置一个默认值;
@PostMapping("/logininfor")
R<Boolean> saveLogininfor(@RequestParam("username") String username,
@RequestParam(value = "status", defaultValue = "1") String status,
@RequestParam("message") String message){...}
(C). 参数中加或者不加@RequestParam的区别
@GetMapping("/user01")
public String getUser01(int userId) {}
public String getUser01(@RequestParam(value="userId", required = false) int userId) {}
@GetMapping("/user02")
public String getUser02(@RequestParam int userId) {}
-(1)不加@RequestParam,前端的参数名需要和后端方法的变量名保持一致才能生效;
-(2)不加@RequestParam,说明参数为可选的,加@RequestParam说明参数为必选的,但@RequestParam可以通过@RequestParam(required = false)设置为可选的;
-(3)加@RequestParam,可以通过@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定传入的参数名,或者直接使用@RequestParam,但是必须要求前后端保持一致;
3. @RequestBody
(A). 用于读取请求的body数据,使用系统默认配置的HttpMessageConverter 进行解析,然后把相应的数据映射到方法的参数上。一般情况下来说常用来处理application/json类型的内容,或者粗鲁的说:将请求体中的JSON数据绑定到方法对应的BEAN上。
@PostMapping("/operlog")
R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog){}
(B). @RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。