-- 创造无限可能

java 接收参数增强篇(@RequestParam,@PathVariable,@RequestBody)

2023-08-17 14:51:00
689 人浏览 0 人点赞
有用,点赞支持一下

@RequestParam
@RequestParam时如果前端没有传递参数,会报出一个异常警告提示,所以携带@RequestParam时参数是必传的

@GetMapping("/requestParm")
public R requestParm(@RequestParam Integer id){
    System.out.println("get带@RequestParam:"+id);
    return R.success(id);
}

异常提示:MissingServletRequestParameterException: Required request parameter 'id' for method parameter type Integer is not presen

不带@RequestParam时不管传不传参数,后端都不会报错,此时答应id的结果为null

@GetMapping("/requestParm")
public R requestParm(Integer id){
    System.out.println("get不带@RequestParam:"+id);

    return R.success(id);
}

实体类带上@RequestParam接收参数
同理,带上@RequestParam时,后端也是报了一个异常警告,接口状态码为400

@GetMapping("/requestParm")
public R requestParm(@RequestParam User user){
    System.out.println("get带@RequestParam:"+user.getId());

    return R.success(user);
}

实体类不带@RequestParam接收参数
接口没有报错,获取到的id参数为null

@GetMapping("/requestParm")
public R requestParm(User user){
    System.out.println("get不带@RequestParam:"+user.getId());

    return R.success(user);
}

总结:
1.用实体类接收参数时不能带上@RequestParam,否者接口会报错
2.如果是单个参数时,带上@RequestParam时前端不传参数就会报错,所以建议是不要带上@RequestParam,这样后端可以判断参数,如果参数必填的话应该是提示前端必传参数,而不是接口报错

所以不管是当个参数还是实体类接收参数,,可以都不要带上@RequestParam 。。。