当前位置: 首页 > news >正文

@RequestBody与@RequestParam

@RequestBody会将请求体中的数据,转换成对象.最主要的是RequestBody就是要返回Json的字符串!!!

@RequestParam会从http请求查询参数中提取数据!

@RequestParam和@RequestBody是Spring Framework中用于处理HTTP请求的注解,它们有以下区别:

1.数据来源:

@RequestParam: 从HTTP请求的查询参数中提取数据,即从URL中的?key=value形式的参数中获取数据。
@RequestBody: 从HTTP请求的请求体(body)中提取数据,通常用于接收JSON、XML等格式的数据。
2.用法:

@RequestParam: 通常用于处理GET请求或POST请求中的表单数据,例如?name=John&age=30这样的查询参数。
@RequestBody: 通常用于处理POST请求中的非表单数据,例如JSON格式的数据,或者XML格式的数据。
3.数据格式:

@RequestParam: 提取的数据一般是简单类型,如字符串、整数等。
@RequestBody: 提取的数据可以是复杂类型,如自定义的Java对象、Map、List等,通常是用于反序列化JSON或XML数据为Java对象。
举个例子来说,假设有一个HTTP POST请求,请求体中包含JSON格式的数据:

{"name": "John","age": 30
}


使用@RequestBody可以将这个JSON数据转换成Java对象:

@PostMapping("/api/users")
public ResponseEntity<User> createUser(@RequestBody User user) {// 处理用户创建逻辑return ResponseEntity.ok(user);
}


而如果是一个HTTP GET请求,包含查询参数:
/api/users?id=123

使用@RequestParam可以提取id参数的值:

@GetMapping("/api/users")
public ResponseEntity<User> getUserById(@RequestParam("id") Long userId) {// 根据用户ID查询用户信息User user = userRepository.findById(userId);if (user != null) {return ResponseEntity.ok(user);} else {return ResponseEntity.notFound().build();}
}


总的来说,@RequestParam适用于提取简单的查询参数,而@RequestBody适用于处理复杂的非表单数据。

相关文章:

  • RabbitMQ 入门篇
  • 【数学建模】——【A题 信用风险识别问题】全面解析
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • 【文件fd】深入理解重定向和缓冲区
  • python-局部求和(赛氪OJ)
  • 2024年有什么赚钱的副业推荐半年还清贷款,成功变现12.3w的全套玩法都放这里了!!!
  • linux用户组练习
  • FastAPI之Depends
  • Scrapy 爬取旅游景点相关数据(五)
  • 【LLM】-14-搭建问答系统
  • 天气曲线echarts
  • PHP常用函数
  • Opencv学习-LUT函数
  • 人工智能未来展望
  • 基于域名的虚拟主机、多虚拟主机的配置、基于ip的虚拟主机及上线静态的前端系统(商城系统)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 2019.2.20 c++ 知识梳理
  • android 一些 utils
  • Angular4 模板式表单用法以及验证
  • flask接收请求并推入栈
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java程序员幽默爆笑锦集
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • scrapy学习之路4(itemloder的使用)
  • vagrant 添加本地 box 安装 laravel homestead
  • 产品三维模型在线预览
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 开发基于以太坊智能合约的DApp
  • 前端存储 - localStorage
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何进阶一名有竞争力的程序员?
  • 小程序01:wepy框架整合iview webapp UI
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 智能网联汽车信息安全
  • 进程与线程(三)——进程/线程间通信
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)(1.13) SiK无线电高级配置(六)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (pojstep1.1.2)2654(直叙式模拟)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (搬运以学习)flask 上下文的实现
  • (二)hibernate配置管理
  • (算法)硬币问题
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (自用)gtest单元测试
  • .net refrector
  • .Net Web窗口页属性
  • .net 反编译_.net反编译的相关问题