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传值。

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

相关推荐
覆东流5 小时前
7.Java数组
java·开发语言·后端
m0_719084115 小时前
限流和获取请求ip的方法
java
码行山野赴时序归途5 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
lzhdim6 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert6 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥6 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
ly76897 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
落魄大学生之流水线上谋生计8 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
for_ever_love__8 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76898 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python