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

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

相关推荐
小狮子安度因7 分钟前
Qt如何改变串口读取数据的频率
开发语言·数据库·qt
小爬虫程序猿11 分钟前
如何利用Java爬虫获取店铺详情:一篇详尽指南
java·开发语言·爬虫
tian-ming13 分钟前
Java八股(一)
java·开发语言
听潮阁31 分钟前
【SpringCloud详细教程】-04-服务容错--Sentinel
java·开发语言·spring boot·spring cloud·eclipse·tomcat
海涛高软1 小时前
QT配置文件详解
开发语言·qt
转转技术团队1 小时前
spring声明式事务源码详解
java·数据库·spring
Object~1 小时前
【第十二课】Rust并发编程(三)
开发语言·后端·rust
codeMaster__hyd1 小时前
使用eclipse构建SpringBoot项目
java·ide·eclipse
哎呦没1 小时前
欢迪迈手机商城:SpringBoot框架的持续集成
spring boot·ci/cd·智能手机
it噩梦1 小时前
使用argo workflow 实现springboot 项目的CI、CD
spring boot·后端·ci/cd