controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法:(LoginUserRequest是一个用户类对象)

java 复制代码
    @PostMapping("/test/phone")
    public Result validPhone(LoginUserRequest loginUserRequest) {
        return Result.success(loginUserRequest);
    }

现在讨论**@Param("loginUserRequest") @RequestParam("loginUserRequest") 和@RequestBody**

三个注解的区别,测试统一用PostMan测试,在博客最后进行总结

一、@Param

++@Param 修饰对象和变量测试一样++

java 复制代码
    @PostMapping("/test/phone")
    public Result validPhone(@Param("loginUserRequest") LoginUserRequest loginUserRequest) {
        return Result.success(loginUserRequest);
    }

使用参数传值:

使用json传值:

二、@RequestParam

++这里使用 @RequestParam 和@RequestParam("loginUserRequest")效果一样++

java 复制代码
    @PostMapping("/test/phone")
    public Result validPhone(@RequestParam("loginUserRequest") LoginUserRequest loginUserRequest) {
        return Result.success(loginUserRequest);
    }

使用参数传值:

使用json传值:

但是我们在参数传值时设置一个变量loginUserRequest,显示参数转换错误,后端把String转为LoginUserRequest对象报错

那我们在json传值时设置一个变量loginUserRequest呢?没报错,但是还是找不到参数

三、@RequestBody

java 复制代码
    @PostMapping("/test/phone")
    public Result validPhone(@RequestBody LoginUserRequest loginUserRequest) {
        return Result.success(loginUserRequest);
    }

使用参数传值:

使用json传值:

如果@RequestBody 是修饰 String phoneNumber 呢?

java 复制代码
    @PostMapping("/test/phone")
    public Result validPhoneNumber(@RequestBody String phoneNumber) {
        System.out.println("phone = " + phoneNumber);
        return Result.success(phoneNumber);
    }

使用参数传值和上面的结果一样

使用json传值,会把phoneNumber当做对象

总结:

1.@Param可用来修饰对象和变量,但只能用参数传值,不能用json传值。

2.@RequestParam用来修饰变量,不能修饰对象,只能用参数传值。

2.@RequestBody 修饰的对象,不能修饰变量,只能使用json传值。

此为本人总结,如有错误,恳请指正。

相关推荐
only-qi2 小时前
146. LRU 缓存
java·算法·缓存
悟能不能悟2 小时前
js闭包问题
开发语言·前端·javascript
潼心1412o2 小时前
C语言(长期更新)第15讲 指针详解(五):习题实战
c语言·开发语言
xuxie133 小时前
SpringBoot文件下载(多文件以zip形式,单文件格式不变)
java·spring boot·后端
重生成为编程大王3 小时前
Java中的多态有什么用?
java·后端
Murphy_lx3 小时前
Lambda表达式
开发语言·c++
666和7773 小时前
Struts2 工作总结
java·数据库
中草药z3 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
yangpipi-4 小时前
C++并发编程-23. 线程间切分任务的方法
开发语言·c++
野犬寒鸦4 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试