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.rhkb.cn/news/224421.html

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

相关文章

docker-compose 安装Sonar并集成gitlab

文章目录 1. 前置条件2. 编写docker-compose-sonar.yml文件3. 集成 gitlab4. Sonar Login with GitLab 1. 前置条件 安装docker-compose 安装docker 创建容器运行的特有网络 创建挂载目录 2. 编写docker-compose-sonar.yml文件 version: "3" services:sonar-postgre…

【计算机网络】网络层——IP协议

目录 一. 基本概念 二. 协议报文格式 三. 网段划分 1. 第一次划分 2. CIDR方案 3. 特殊的IP地址 四. IP地址不足 1. 私有IP和公网IP 2. DHCP协议 3. 路由器 4. NAT技术 内网穿透(NAT穿透) 五. 路由转发 路由表生成算法 结束语 一. 基本概念 IP指网络互连协议…

android内存管理机制概览

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关概念3.1 垃圾回收3.2 应用内存的分配与回…

Linux与Bash 编程——Linux文件处理命令-L1

目录: linux系统与shell环境准备 Linux系统简介操作系统简史Linux的发行版:Linux与Windows比较:Linux安装安装包下载Linux的访问方式远程登录方式远程登录软件:mobaxterm的使用:使用电脑命令行连接:sshd的…

一篇讲透:箭头函数、普通函数有什么区别

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 什么是箭头函数 箭头函数和普通函数的区别 更简洁的语法 箭头函数…

10-让Java性能提升的JIT深度剖析

文章目录 JVM的语言无关性解释执行与JITC1、C2与Graal编译器C1编译器C2编译器 分层编译(了解即可)热点代码热点探测方法调用计数器回边计数器 编译优化技术方法内联锁消除标量替换逃逸分析技术逃逸分析的原理逃逸分析 JVM的语言无关性 跨语言(语言无关性&#xff0…

OpenHarmony之内核层解析~

OpenHarmony简介 技术架构 OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件…

平衡二叉树的构建(递归

目录 1.概念:2.特点:3.构建方法:4.代码:小结: 1.概念: 平衡二叉树(Balanced Binary Tree),也称为AVL树,是一种二叉树,它满足每个节点的左子树和右…

BDD - Python Behave Runner Script

BDD - Python Behave Runner Script 引言Runner Scriptsubprocess.run 调用 Behave 命令行调用 Behave 提供的 API behave_main 引言 通过终端命令执行 Behave 测试用例,有时 IDE 重启了,还得重新敲一遍命令,很是麻烦,说实话我都…

单例模式(C++实现)

RAII运用 只能在栈上创建对象 只能在堆上创建的对象 单例模式 设计模式 懒汉模式 解决线程安全 优化 饿汉模式 饿汉和懒汉的区别 线程安全与STL与其他锁

Hadoop入门学习笔记——四、MapReduce的框架配置和YARN的部署

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 四、MapReduce的框架配置和YARN的部署4.1. 配置MapReduce…

微擎模块 出现Error: template source ‘common/message’ is not exist!解决方法

今天有会员反馈微课堂分销中心打不开,错误提示模板找不到:Error: template source ‘common/message’ is not exist!,看了下这模板应该微擎框架通用的,进公众号会员管理-会员中心网址居然也打不开,提示一样的错误&…

【hacker送书第11期】Python数据分析从入门到精通

探索数据世界,揭示未来趋势 《Python数据分析从入门到精通》是你掌握Python数据分析的理想选择。本书深入讲解核心工具如pandas、matplotlib和numpy,助您轻松处理和理解复杂数据。 通过matplotlib、seaborn和创新的pyecharts,本书呈现生动直…

5g消息-5G时代短信升级-富媒体智能交互-互联网新入口

在5G时代,运营商和各大手机厂商都在积极推进5G消息的商用,基于短信入口的富媒体消息应用在近两年得到快速发展,并在企业端形成了广泛应用。 作为5G时代的数字原生应用,5G消息支持用户通过文字、图片、音频、视频、位置等富媒体方式…

GIT具体配置步骤详解

GIT配置具体步骤如下 SDK 使用 Repo 工具管理,拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workf…

SpringBoot集成opencc4j实现繁体中文转为简体中文

背景 繁体中文转为简体中文的需求非常常见,特别是在中文语境下的文本处理和翻译应用中。有很多现成的工具和库可以实现这个功能,比如 OpenCC 、 HanLP 等。从网上下载的 MySQL 版诗词数据库中的诗词数据都是繁体字,这里使用 SpringBoot 集成…

Apache Flink 进阶教程(七):网络流控及反压剖析

目录 前言 网络流控的概念与背景 为什么需要网络流控 网络流控的实现:静态限速 网络流控的实现:动态反馈/自动反压 案例一:Storm 反压实现 案例二:Spark Streaming 反压实现 疑问:为什么 Flink(bef…

物联网产品设计,聊聊设备OTA的升级

物联网产品设计部分的OTA设备固件是一个非常重要的部分,能够实现升级用户服务、保障系统安全等功能。 在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样…

unity HoloLens2开发,使用Vuforia识别实体 触发交互(二)(有dome)

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、打包到HoloLens二、Vuforia相关1.配置识别框2.制作一个半透明识别框:3.设置如下4.问题 四 HoloLens2 问题总结 前言 我使用的utniy 版本:Unity 2021.3…

产品原型设计软件 Axure RP 9 mac支持多人写作设计

axure rp 9 mac是一款产品原型设计软件,它可以让你在上面任意构建草图、框线图、流程图以及产品模型,还能够注释一些重要地方,axure rp汉化版可支持同时多人写作设计和版本管理控制,这款交互式原型设计工具可以帮助设计者制作出高…