@RequestBody 还是 @RequestParam并不是根据请求方法是GET还是POST决定的
@RequestParam 就是从请求头中获取参数,
@RequestBody 就是从请求体里获取参数 ,
但是要注意@RequestBody 接收的是json 所以要用实体类或者map接收,即使是一个参数.
不使用任何注解的时候,默认同@RequestParam(required = false) 一样 ,而且Controller参数名 要和 queryString 的key 一致,如果不一致就要使用 @RequestParam 了
不加@RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效
参考:https://blog.csdn.net/qq_39078783/article/details/108144762
@PathVariable可以用来映射URL中的占位符到目标方法的参数中
// @PathVariable可以用来映射URL中的占位符到目标方法的参数中
@GetMapping("/detail/{id}")
@ApiOperation(value = "系统用户查看详情", notes = "传入userId")
public ApiResult<SysUserDetailVO> detail(@ApiParam(value = "主键", required = true) @PathVariable Long id) {
return ApiResult.data(userService.detail(id));
}
参考:https://huaweicloud.csdn.net/638f1009dacf622b8df8e3f3.html?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-8-126247307-blog-123692522.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-8-126247307-blog-123692522.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=15
二、注解示例
- @RequestParam 示例
接收请求行中URL后的查询串参数,当访问URL为 localhost:8080/demo1?name=Aaron&age=18时,将会把查询串中的参数按名绑定到demo1方法的相应形参上
@RequestMapping(value="/demo1")
public void demo1 (@RequestParam String name, @RequestParam int age ){
...
}
接收请求体中的参数
当请求头中的 Content-Type 类型为:multipart/form-data 或 application/x-www-form-urlencoded 时,该@RequestParam注解同样可以把请求体中相应的参数绑定到Controller方法的相应形参中
@Controller
@RequestMapping("receive")
public class receiveTest {
@RequestMapping("/receiveFile")
@ResponseBody
public String receiveFile(@RequestParam(required = false, value = "file2") MultipartFile File2,
@RequestParam String FirstName, @RequestParam String LastName) {
System.out.println("FirstName : " + FirstName);
System.out.println("LastName : " + LastName);
return "Success";
}
}
12
2.@PathVariable 示例
现有Controller如下,当访问URL为 localhost:8080/demo2/Bob/12时,将会把URL占位符的的参数按名绑定到demo2方法的相应形参上
@RequestMapping(value="/demo2/{name}/{id}")
public void demo2(@PathVariable String name, @PathVaribale int id){
}
3.@RequestBody示例
在post请求中,当访问URL为 localhost:8080/getproduct,而且post的部分数据为{id:32}
@RequestMapping("/getproduct")
public Product getProduct(@RequestBody Product product){
...//Product包含有一个 名字为 id的属性
}
原文链接:https://blog.csdn.net/qq_32683235/article/details/113878052