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

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

相关推荐
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
来杯@Java5 小时前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
卷毛的技术笔记6 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥6 小时前
匿名函数 lambda + 高阶函数
java·python·算法
isyangli_blog6 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008116 小时前
FastAPI APIRouter
开发语言·python
Benszen6 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆6 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木6 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r6 小时前
Java调用链MCP分析工具
java·python·ai编程