浅谈@RequestParam、@RequestBody、@PathVariable

        首先先说明一下,三者都是作用于Controller层用来接收前端传递过来的数据。下面就来简单说一下三者之间的区别、使用方式以及常见的应用场景。

@RequestParam

  • @RequestParam注解一般与get请求一起使用。
  • 一个请求(一个方法中)可以有多个@RequestParam。
  • @RequestParam 用来接收普通参数。

那么问题来了,加@RequestParam和不加有什么区别呢?我们又该在什么时候用它呢?
(1)加@RequestParam注解

@RequestMapping("/user")
public String user(int userId) {
  return "user";
}

(2)不加@RequestParam注解

@RequestMapping("/user")
public String user(@RequestParam("userId") int userId) {
  return "user";
}
  • 不添加该注解则参数为非必传,反之参数为必传。参数名为userId。
  • 通过注解中的参数required = false可以设置参数为非必传。required值默认为true。
  • 通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名。
  • 通过参数defaultValue = "0"可以指定参数默认值。注意:当为require设置为false时才可以使用defaultValue。
@RequestMapping("/user")
public String user(@RequestParam(value = "userId", defaultValue = "0", required = false) int userId) {
  return "user";
}

@RequestBody(常用)

  • @RequestBody注解一般与post方法使用。
  • 一个请求中只能存在一个@RequestBody注解。
  • @RequestBody 用于接收前端传递给后端的json字符串中的数据。(处理json格式的数据)

语法格式:

(@RequestBody Map map)
(@RequestBody Object object)

(1)(@RequestBody Map map)方式:

        这种方式相对来说比较简单,我们将json解析成Map形式的key-value键值对,通过map.get(“Key”)就可以拿到值。

(2)(@RequestBody Object object)方式:

        通过json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合实体类的对应属性的类型要求时,会调用实体类的setter方法将值注入到该属性。

代码样例:

public Result deleteBookById(@RequestBody HashMap<String, String> map) {
        bookService.deleteBookById(Long.parseLong(map.get("id")));
        return Result.createWithSuccessMessage();
    }

public Result updateBookById(@RequestBody Book book){
        Book record = bookService.updateBookById(book);
        return Result.createWithModel(record);
    }

@PathVariable(restful常用)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星悦糖

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值