一、@RequestBody
1、@RequestBody接收的参数是来自requestBody中,即请求体,可以将body里面所有的json数据传到后端,后端再进行解析。GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交.
2、一个接口中只能有一个@RequestBody注解。
3、content-type : application/json时候可用,form-data、x-www-form-urlencoded时候不可用
一般以此形式使用:
(@RequestBody Map map)
(@RequestBody Object object)
public User addUserById (@RequestBody HashMap<String, String> map) {
return UserService.addUserById(map.get("id"));
}
public User updateUserById(@RequestBody User user){
return UserService.updateUserById(user);
}
二、@RequestParam
1、接收的参数是来自requestHeader中,即请求头。
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
2、form-data、x-www-form-urlencoded时候可用,但是要将Headers里的Content-Type删掉,也可以用来获取url中的参数,url中的?后面添加参数即可用。
三、@PathVariable
@PathVariable通过映射url中的绑定的占位符
@RequestMapping("/getUser/{id}")
public User getUserById(@PathVariable String id){
return userService.getUser(id)
}
注意:方法参数名称和需要绑定的url变量名要一致,否则会报错! 即 {id} 和 String id
若名称不一致,则采用这种写法:
@RequestMapping("/getUser/{id}")
public User getUserById(@PathVariable("id") String UserId){
return userService.getUser(id)
}