@RequestBody和@RequestParam区别

《Spring Boot 中 @RequestBody 与 @RequestParam 的区别,你搞清楚了吗?》 通过上面的介绍和示例,我们可以清楚地看到和主要用于处理请求体中的复杂数据结构,常见与等表示请求体数据格式的 Content-Type 配合使用。主要用于获取请求中的简单类型参数值,适用于 GET 方法的查询字符串或 POST 方法的表单数据(常见对应格式)。希望这篇博客能够帮助大家更好地理解这两个注解在 Spring Boot 中的用法和区别,在以后的开发中能够更加准确地运用它们哦! 阅读详情

@RequestParam

用来处理Content-Type 为 application/x-www-form-urlencoded 编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded 类型)

RequestParam可以接受简单类型的属性,也可以接受对象类型。
实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。

tip :
在Content-Type: application/x-www-form-urlencoded的请求中, get 方式中queryString的值,和post方式中 body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到。

@RequestBody

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

  • GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
  • POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

总结:

  • 在GET请求中,不能使用@RequestBody。
  • 在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。

举个例子,在SpringMVC配置了HttpMessageConverters处理栈中,指定json转化的格式,如Date转成‘yyyy-MM-dd’,则参数接收对象包含的字段如果是Date类型,就只能让客户端传递年月日的格式,不能传时分秒。因为不同的接口,它的参数可能对时间参数有不同的格式要求,所以这样做会让客户端调用同事对参数的格式有点困惑,所以说扩展性不高。

如果使用@RequestParam来接受参数,可以在接受参数的model中设置@DateFormat指定所需要接受时间参数的格式。

另外,使用@RequestBody接受的参数是不会被Servlet转化统一放在request对象的Param参数集中,@RequestParam是可以的。

综上所述,一般情况下,推荐使用@RequestParam注解来接受Http请求参数。

@RequestParam、@ModelAttribute、@RequestBody的区别 一、@RequestParam @PostMapping("/getUserLogin") public String getUserLogin(@RequestParam("username") String username, @RequestParam("password") String password) { selectByCond(username,password); } 注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否 阅读详情

相关推荐

深入Linux网络子系统:STMMAC驱动如何通过MDIO总线与PHY芯片“对话”

本文深入解析了Linux网络子系统中STMMAC驱动通过MDIO总线与PHY芯片的通信机制。详细介绍了MDIO总线的注册流程、PHY设备的绑定机制以及设备树配置,帮助开发者理解MAC控制器与PHY芯片的协作基础,优化网络通信性能。

weixin_26897585的博客 448

@RequestBody 和 @RequestParam注解使用详解

注解@RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非、等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。在GET请求中,不能使用@RequestBody。

weixin_46058921的博客 3万+

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来

本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。

weixin_30787531的博客 220

@RequestParam和@RequestBody

用来绑定查询参数(也就是在URL上的参数)和from data(也就是请求体,对应postman中的 from-data)的。只要我发起请求时删除放在URL上和使用from data传参都可以使用来接收。

五更钟动的博客 7218

2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

针对YOLO26模型改进痛点,本专栏整理200+实战验证方法,覆盖卷积层、注意力机制等核心模块。 每种方法含原理、性能分析、改进路径及实操流程,代码可直接运行,快速提升模型效果,性价比超高。

魔改工程师的博客 1万+

【华为OD机试】创建二叉树(python, java, c++, js)

请按下列描达构建一颗二叉树,并返回该树的根节点: 1、先创建值为-1的根结点,根节点在第0层; 2、然后根据operations依次添加节点: operations[i] = [height, index] 表示对第 height 层的第index 个节点node, 添加值为i 的子节点: 若node 无「左子节点」。则添加左子节点; 若node 有「左子节点」但无「右子节点」,则添加右子节点: 否则不作任何处理。 height、index 均从0开始计数;index 指所在层的创建顺序。

A_D_I_D_A_S的博客 188

@RequestBody 和 @RequestParam

在前后端传json数据进行交互的时候,同学们会经常用到的两个注解。 @RequestBody和@RequestParam主要是用来接收前端传给后端的json数据。一般来说,@RequestBody注解一般使用在post请求中,因为前端将json数据放在了请求体中。在后端接收的方法里@RequestBody可以和@RequestParam同时使用,但一个方法里,@RequestBody只能有一个,@RequestParam可以有多个。@RequestParam使用在GET请求方式中,可以接收普通元素、数组、

weixin_54707282的博客 2万+

点云语义分割:PointNet训练S3DIS数据集

文章目录一、数据准备1.1、数据下载二、训练三、测试 项目地址:pointnet 此次我们是用pointnet网络来做语义分割。代码在pointnet项目中的sem_seg文件夹下,里面也有README.md介绍了训练的过程。 一、数据准备 1.1、数据下载 原始数据下载 处理好的h5格式数据下载 二、训练 三、测试 ...

zhaoguanhua的博客 4176

@RequestBody的使用

基础知识介绍: @RequestBody主要用来接收前端传递给后端的请求体中的数据; GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而需要用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。 注意:一个请求,只有一个RequestBody,但是可以有多个RequestParam。 这很好理解,请求体只有一个,

qq_35448165的博客 1万+

2020计算机专业保研夏令营面经:中科院计算所网数机试题目

计算所网络数据科学与技术重点实验室的第一阶段是机试。机试不限程序语言,要求提交源代码。

乔卿的博客 2957

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3584

详细分析Java中的@RequestParam和@RequestBody

1. `@RequestParam`适用于处理HTTP请求中的查询参数和表单参数,以及在需要设置默认值、接收多个参数的情况下使用。这使得在Spring MVC应用中,处理简单的参数传递变得更加方便。 2. `@RequestBody`注解适用于接收请求体中的结构化数据,特别是在处理非表单数据、接收复杂对象、处理RESTful API请求以及支持多种数据格式的情况下。 (一般用于处理非 `Content-Type: application/x-www-form-urlencoded`编码格式的数据,比如:`

码农研究僧的博客 2万+

Mac下Neo4j的安装、配置及Error汇总

Mac 配置 jdk环境(图文) 卸载jdk

Yale-曼陀罗 1642

@RequestParam和@RequestBody的区别,以及两者是否能同时使用

@RequestParam和@RequestBody的区别 @RequestParam 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型) @RequestParam可以接受简单类型的属...

DCFANS的博客 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

POST、GET、@RequestBody和@RequestParam区别

@RequestParam 注解@RequestParam接收的参数是来自requestHeader中,即请求头。 RequestParam可以接受简单类型的属性,也可以接受对象类型。 @RequestParam有三个配置参数: required 表示是否必须,默认为 true,必须。 defaultValue 可设置请求参数的默认值。 value 为接收url的参数名(相当于key值...

Hello World 31万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot传递单一参数时@RequestParam和@RequestBody的区别

用SpringBoot框架做项目时,经常需要前端给后端传递参数,如果需要多条参数,通常的做法是把这些参数封装为一个对象来传递,前端用POST方式调用。但有时会遇到后端只需要一条参数(比如一个String)的情况,此时如果还封装为一个对象,有些多余;最好的办法是用GET方式调用,直接把参数拼接在url后面。但,一般项目都有统一的接口规范,要求接口都要用POST方式,此时就遇到一个问题:controller方法上到底是用@RequestParam注解还是用@RequestBody注解? 之前对这两个注解的区别

bachbrahms的博客 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

@Requestparam和@Requestbody的区别

@Requestparam和@Requestbody的区别 @Requestparam 注解@RequestParam接收的参数是来自requestHeader中,即请求头。 @RequestParam可以接受简单类型的属性,也可以接受对象类型。 @RequestParam有三个配置参数: required 表示是否必须,默认为 true,必须。 defaultValue 可设置请求参数的默认值。 value 为接收url的参数名(相当于key值)。 @Requestbody 注解@RequestB

只有光头才能强的博客 1417

Java注解@RequestBody和@RequestParam区别

用于接收请求体中的复杂数据,通常用于POST、PUT请求。:用于接收URL参数或请求头中的简单数据,通常用于GET请求,也可以用于POST请求的参数传递。根据实际需求选择合适的注解,可以更好地处理HTTP请求中的数据。

xuweilin的博客 1102

@RequestParam和@RequestBody的区别

1、作用: @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解) @RequestBody:将请求体中的参数绑定到控制器的方法参数上 2、语法: 语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””) value:参数名 required:是否包含该参数...

qq_38170076的博客 496

@RequestParam、@RequestBody和@ModelAttribute区别

@RequestParam、@RequestBody和@ModelAttribute区别 一、@RequestParamGET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上1. @RequestParam(org.springframework.web.bind.annotation.RequestParam)用于将指定的...

lucca的专栏 200

@RequestBody、@RequestParam和@PathVariable的区别

@RequestBody、@RequestParam和@PathVariable的区别

KEEP 1593
上一篇: 日常开发sql使用总结
下一篇: Unable to infer base url. This is common when using dynamic servlet registration or when the API is
She_lock
博客等级 码龄12年 157粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值