栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot - @PathVariable/@RequestParam/@RequestBody注解使用详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot - @PathVariable/@RequestParam/@RequestBody注解使用详解

作用是什么?

@PathVariable/@RequestParam/@RequestBody都是参数注解,用于将请求的参数与方法中的参数进行绑定与映射。

如何使用? 1. @PathVariable

(A). 用于将请求URI中的模板变量,映射到方法的参数上,默认情况下,参数名必须要和路径上的变量名一样,@PathVariable注解允许我们使用value或name属性来给参数取一个别名;

@GetMapping(value = "/{advertId}")
public AjaxResult getInfo(@PathVariable("advertId") Long advertId) {...}

// 参数名:userName, 路径上的变量名:name
@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 info(@PathVariable String username) {...}
2. @RequestParam

(A). 用于将URI中的请求参数,映射到方法的参数上,如果参数是通过list?id=102&name=rocky传递过来的,可以通过@RequestParam来获取。

@PostMapping("/logininfor")
R saveLogininfor(@RequestParam("username") String username, 
						  @RequestParam("status") String status, 
						  @RequestParam("message") String message){...}

(B). 如果传递的参数为空,可以通过defaultValue设置一个默认值;

@PostMapping("/logininfor")
R saveLogininfor(@RequestParam("username") String username, 
						  @RequestParam(value = "status", defaultValue = "1") String status, 
						  @RequestParam("message") String message){...}

(C). 参数中加或者不加@RequestParam的区别

// URI上的参数是可选的
// http://localhost:8080/user01
// http://localhost:8080/user01?userId=102 这两个请求, getUser01这个方法都能被执行。
@GetMapping("/user01")
public String getUser01(int userId) {}
public String getUser01(@RequestParam(value="userId", required = false) int userId) {}

// URI上的参数是必选的
// http://localhost:8080/user02?userId=102 这个请求, getUser02这个方法才能被执行。
@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 saveLog(@RequestBody SysOperLog sysOperLog){}

(B). @RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号