@RequestBody @PathVariable 和 @RequestParam 的区别。

一、@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)  
}

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值