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

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

相关推荐
chushiyunen2 分钟前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat
天上掉下来个程小白9 分钟前
HttpClient-03.入门案例-发送POST方式请求
java·spring·httpclient·苍穹外卖
ModestCoder_18 分钟前
将一个新的机器人模型导入最新版isaacLab进行训练(以unitree H1_2为例)
android·java·机器人
a1800793108039 分钟前
软件工程面试题(二十二)
java·面试·软件工程
RainbowSea42 分钟前
4. RabbitMQ 发布确认的配置详细说明
java·消息队列·rabbitmq
车载小杜1 小时前
基于指针的线程池
开发语言·c++
robin_suli1 小时前
Spring事务的传播机制
android·java·spring
青云交1 小时前
Java 大视界 -- Java 大数据在智能电网电力市场交易数据分析与策略制定中的关键作用(162)
java·大数据·数据分析·交易策略·智能电网·java 大数据·电力市场交易
沐知全栈开发1 小时前
Servlet 点击计数器
开发语言
m0Java门徒1 小时前
Java 递归全解析:从原理到优化的实战指南
java·开发语言