Java@RequestParam注解和@RequestBody注解接收参数

目录

    • Java后端接收数据
  • 第一章、后端不写任何注解情况下接收参数
    • 1.1)后端不写注解postman发出get请求
    • 1.2)后端不写注解postman发出post请求
  • 第二章、后端写@RequestParam注解接收参数
    • 2.1)postman发出post请求
    • 2.2)postman发出get请求
  • 第三章、后端写@RequestBody注解接收参数
    • 3.1)postman发出post请求
    • 3.2)postman发出get请求
  • 第四章、总结
    • @RequestParam总结
    • @RequestBody总结

Java后端接收数据

注意:后端接收参数大概四种情况:
①不写任何注解
②写@RequestParam注解,多个@RequestParam注解
③写@RequestBody
④写@RequestParam注解同时又写@RequestBody

第一章、后端不写任何注解情况下接收参数

1.1)后端不写注解postman发出get请求

①后端参数类型为Integer,发送参数String “1”,结论接收成功

在这里插入图片描述

②后端参数类型为String,发送参数为String “1”,结论接收成功

在这里插入图片描述

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功
在这里插入图片描述

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论接受到的俩个值为NULL值
在这里插入图片描述
postman页面
在这里插入图片描述

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
在这里插入图片描述
postman页面
在这里插入图片描述
⑥后端参数类型为map,接收多个不同名参数,结论失败
在这里插入图片描述
postmanye页面
在这里插入图片描述

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论对象参数的属性值为null
在这里插入图片描述
postman页面
在这里插入图片描述

1.2)后端不写注解postman发出post请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,两个值为NULL值

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功

⑥后端参数类型为map,接收多个不同名参数,结论失败

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,对象参数的属性值为null

第二章、后端写@RequestParam注解接收参数

2.1)postman发出post请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败bad request

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
注意:不同名的不会存入

在这里插入图片描述
请求:
在这里插入图片描述
如果传递的三个参数有两个与数组参数同名会存入数组,不同名的则不会被存入数组
在这里插入图片描述
传参:两个与数组参数同名,一个不同名
在这里插入图片描述
⑥使用Map去接收请求参数,接收成功
在这里插入图片描述

postman请求:
在这里插入图片描述

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,Bad Request
@RequestParam不能注解实体类参数
在这里插入图片描述
postman页面
在这里插入图片描述

2.2)postman发出get请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败bad request

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
不同名的不会存入

⑥后端参数类型为map,接收多个不同名参数,结论成功

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,Bad Request
@RequestParam不能注解实体类参数

第三章、后端写@RequestBody注解接收参数

@RequestBody(只能接收JSON字符串)

3.1)postman发出post请求

①后端参数是Integer,传参数是数字 1 ,结论成功。
json的value为" " :后端对应属性是String类型的,那么接受到的就是" ",如果后端属性的类型是Integer、Double等,那么接收到的就是null。
json的value为null:后端对应收到的就是null。
②后端参数是String,传参数是字符串 1,结论成功
③后端参数是Integer,传参数是json {“eid”:1},结论失败 bad request
④后端参数是一个简单对象,发送参数方式为JSON{“eid”:“1”,“pid”:1}
会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且key对应的值符合实体类对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。

在这里插入图片描述
postman页面
在这里插入图片描述
⑥@RequestBody与@RequestParam()同时使用:
Controller:
在这里插入图片描述
postman页面:
在这里插入图片描述

3.2)postman发出get请求

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。

第四章、总结

@RequestParam总结

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

②@RequestParam将接收到的字符串自动转化为对应的类型

③@RequestParam不支持直接传递实体类的方式,可接收Map和数组,可接收单个参数。

④@RequestParam注解的属性
1、如果参数前写了@RequestParam(xxx),那么前端发送的请求路径中必须有对应的xxx参数才行
2、value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。
3、name:作用同value相同
4、required:表示请求中一定要传入对应的参数,如果设置为false时,当请求中没有此参数,将会默认为null
5、defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties[‘java.vm.version’]}"

@RequestParam(value = "参数名",required = false,defaultValue = "12")

@RequestBody总结

①@RequestBody主要使用post请求,接收JSON类型数据

②一个请求中@RequestBody最多只能有一个,而@RequestParam()可以有多个。它们可以同时使用。

③@RequestParam指定接收的参数可以是普通元素、数组、集合、对象等等,@RequestBody接收的是请求体里面的数据

④如果参数是放在请求体中,以application/json的格式传入后台接口,那么后台要@RequestBody才能接收到;如果不是放在请求体中的话要用@RequestParam来接收,或者在形参前不贴@RequestParam注解也能接收。

⑤feign或者openfeign远程调用服务时,如果参数前什么也不写,那么会被默认是@RequestBody。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/300269.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快排可视化

文章目录 1. 结果1.1 结果图1.2 动画图 2. 代码2.1 快排代码2.2 绘图代码 1. 结果 红色为被选中的pt 1.1 结果图 1.2 动画图 1个pt排好序后就把该pt标红 2. 代码 2.1 快排代码 private Integer selPt(List<Integer> list, int left, int right) {if (left > rig…

iview表格固定列横向滚动条无法拖动问题

文章目录 问题解决办法 问题 在使用iview的表格组件时&#xff0c;遇到了设置固定列表格后滚动条无法拖动的问题&#xff0c;当对表格列进行固定后&#xff0c;底部的横向滚动条就无法拖动了&#xff0c;主要的问题就是固定区域盖住了横向滚动条。 解决办法 在组件内直接加下…

【Gitlab】CICD流水线自动化部署教程

第一步&#xff0c;准备 GitLab 仓库 这个不用多说&#xff0c;得先保证你的项目已经托管在一个 GitLab 仓库中。 第二步&#xff0c;定义 .gitlab-ci.yml 文件 在你的项目根目录中创建一个 .gitlab-ci.yml 文件。这个文件将定义所有 CI/CD 的工作流程&#xff0c;包括构建、测…

虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤

网络技术的不断发展也为网络威胁带来了安全隐患&#xff0c;近期&#xff0c;对于许多大型企业来说&#xff0c;许多企业的虚拟机服务器系统遭到了lockbit2.0/3.0勒索病毒攻击&#xff0c;导致企业所有计算机系统瘫痪&#xff0c;无法正常工作&#xff0c;严重影响了企业的正常…

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

【教程】从gitee或者github,下载单个文件或文件夹命令

1.打开git 2.初始化 git init 3.设置允许下载子目录 &#xff08;不需要修改任何&#xff0c;只要原样复制&#xff0c;需要按照个人状况修改的话我会标注&#xff09; git config core.sparseCheckout true 4. 选择要下载的单个文件夹的路径 这里单引号内部需要修改&…

嵌入式——RTC内置实时时钟

学习目标 理解原理图RTC设计部分掌握初始化RTC掌握设置时间掌握读取时间学习内容 RTC原理图 RTC结构框图 RTC时钟 开发流程 加载依赖。gd32f4xx_rtc.c,gd32f4xx_pmu.c初始化RTC。时钟配置。获取时钟。RTC初始化 // 电池管理加载 rcu_periph_clock_enable(RCU_PMU); pmu_back…

PPT中加入页码

PPT中加入页码 文章目录 简单版本样式更改 简单版本 PPT中插入页码&#xff0c;基础的就是在“插入”选项卡中单机“幻灯片编号”即可 样式更改 然而&#xff0c;就像我们做幻灯片不满足于白底黑字一样&#xff0c;页码也总不能是默认的样式。 比如&#xff0c;在页码下面…

浅谈师范双非普本工科专业的秋招历程

浅谈师范双非普本工科专业的秋招历程 本人普通师范院校通信工程专业&#xff0c;于秋招历程之中四处碰壁&#xff0c;迫于家庭等各种因素考虑&#xff0c;最终选择移动的偏远县城岗位的OFFER&#xff01;本人秋招历程之中&#xff0c;屡屡碰壁&#xff0c;也算得上“收获满满”…

电子科大软件系统架构设计——设计模式

设计模式概述 设计模式的背景 设计面向对象软件比较困难&#xff0c;而设计可以复用的面向对象软件更加困难不是解决任何问题都需要从头做起&#xff0c;最好能复用以往的设计方案经验面向对象软件设计经验需要有一定的模式记录下来&#xff0c;以提供给其他设计者使用&#…

Spring Boot3 Web开发技术

前期回顾 springboot项目常见的配置文件类型有哪些&#xff1f;哪种类型的优先级最高 yml properties yaml 读取配置文件里的数据用什么注解&#xff1f; value restful风格 RESTful 风格与传统的 HTTP 请求方式相比&#xff0c;更加简洁&#xff0c;安全&#xff0c;能隐…

数据仓库【5】:项目实战

数据仓库【5】&#xff1a;项目实战 1、项目概述1.1、项目背景1.2、复购率计算 2、数据描述3、架构设计3.1、数据仓库架构图 4、环境搭建4.1、环境说明4.2、集群规划4.3、搭建流程 5、项目开发5.1、业务数据生成5.2、ETL数据导入5.3、ODS层创建&数据接入5.4、DWD层创建&…