总结:前后端集合、数组类型数据交互底层原理,SpringBoot框架解析

总结:前后端集合、数组类型数据交互底层原理,SpringBoot框架解析

  • 一·前后端信息交互本质:
    • 1.两台电脑可以通过收发电磁波、控制网线电路开关等基础物理设施,就可以进行物理层面的电信号交互,电信号又可以通过各种传感设备转为对应的显示数据
    • 2.前后端通信一般默认使用的都是http协议,该协议本质就是一个文本协议。
  • 二·前后端一次请求应答的基本流程如下:概述
    • 1.客户端发送请求
    • 2.服务端接收请求
    • 3.服务端发送响应请求
    • 4.客户端接收响应请求
    • 综上所述:通过这四步,就完成了一次简单前后端http请求数据交互。
  • 三·前后端集合、数组类型数据交互底层原理:
    • 1.通过了解前后端http通信协议,可知前后端交互集合、数组等类型元素,本质就是将多个同类型字符串,通过特定字符间隔,然后一起传输给后端;后端再通过分隔符一个个解析出来,再封装到新创建的集合或者数组对象里面罢了。
    • 2.不同开发框架,实现集合、数组参数传递解析过程也不完全一样,甚至你自己都可以设计一套交互规则
  • 四·Springboot框架如何将http参数解析为集合或者数组类型参数:
    • 情况一:以URL路径拼接、application/x-www-form-urlencoded、multipart/form-data,三种格式提交数据时
      • 1.(优先级最高)当后端接口控制层使用数组或者集合类型接收参数时,http请求查询字符串中,若同时存在多个键值对的key相同,则该多个键值对就可以被Springboot框架解析为数组或者集合类型参数,键值对从左到右顺序,就是他们放入数组或者集合对象的顺序;若只有一个对应的键值对,则后端接口数组、集合对象里面只会存在一个元素
      • 2.(第二优先级)当后端接口使用数组或者集合类型接收参数时,http请求查询字符串中,若只存在一个对应键值对,且该键值对的值是逗号拼接时,Springboot框架会将该key对应的值以逗号拆分为数组或者集合对象里面的多个元素,从左到右顺序,就是他们放入数组或者集合对象的顺序
      • 3.键值对参数放在url后面或者body里面都一样,都会一起生效
      • 4.Springboot控制层数组、集合类型参数必须是存在构造方法的类,不能是抽象类或者接口类型,因为框架解析完参数后,需要自动调用构造方法创建对象然后存放数据
    • 情况二:以json格式提交数据:application/json
      • 1.当后端接口控制层使用@RequestBody注解标注参数对象,且对象属性有数组或者集合类型接收参数时,http请求体中的json格式数据,集合数组类型key,使用[]包含多个元素,map类型key,就使用{}包含多个键值对

一·前后端信息交互本质:

1.两台电脑可以通过收发电磁波、控制网线电路开关等基础物理设施,就可以进行物理层面的电信号交互,电信号又可以通过各种传感设备转为对应的显示数据

2.前后端通信一般默认使用的都是http协议,该协议本质就是一个文本协议。

二·前后端一次请求应答的基本流程如下:概述

1.客户端发送请求

客户端必须先将各种文件、对象数据等转为字符串,且将该字符串按照http协议格式进行封装(URL路径、请求头、请求体),然后通过网卡将http格式文本转为电磁波发送出去

2.服务端接收请求

服务端再通过网卡将电磁波转为http格式文本,然后再解析出URL路径、请求头、请求体,拿到数据后再进行对应的业务逻辑处理

3.服务端发送响应请求

服务端处理完业务逻辑之后,也需要将回传给前端的文件或者数据等转为文本字符串,再按照http格式进行封装(URL路径、请求头、请求体),然后通过网卡将http格式文本转为电磁波发送出去

4.客户端接收响应请求

客户端再通过网卡将电磁波转为http格式文本,然后再解析出URL路径、请求头、请求体,拿到数据后再进行对应的业务逻辑处理

综上所述:通过这四步,就完成了一次简单前后端http请求数据交互。

三·前后端集合、数组类型数据交互底层原理:

1.通过了解前后端http通信协议,可知前后端交互集合、数组等类型元素,本质就是将多个同类型字符串,通过特定字符间隔,然后一起传输给后端;后端再通过分隔符一个个解析出来,再封装到新创建的集合或者数组对象里面罢了。

2.不同开发框架,实现集合、数组参数传递解析过程也不完全一样,甚至你自己都可以设计一套交互规则

四·Springboot框架如何将http参数解析为集合或者数组类型参数:

情况一:以URL路径拼接、application/x-www-form-urlencoded、multipart/form-data,三种格式提交数据时

1.(优先级最高)当后端接口控制层使用数组或者集合类型接收参数时,http请求查询字符串中,若同时存在多个键值对的key相同,则该多个键值对就可以被Springboot框架解析为数组或者集合类型参数,键值对从左到右顺序,就是他们放入数组或者集合对象的顺序;若只有一个对应的键值对,则后端接口数组、集合对象里面只会存在一个元素

url?car=华为&car=比亚迪&car=法拉利

2.(第二优先级)当后端接口使用数组或者集合类型接收参数时,http请求查询字符串中,若只存在一个对应键值对,且该键值对的值是逗号拼接时,Springboot框架会将该key对应的值以逗号拆分为数组或者集合对象里面的多个元素,从左到右顺序,就是他们放入数组或者集合对象的顺序

url?car=极氪,吉利,五菱宏光

3.键值对参数放在url后面或者body里面都一样,都会一起生效

4.Springboot控制层数组、集合类型参数必须是存在构造方法的类,不能是抽象类或者接口类型,因为框架解析完参数后,需要自动调用构造方法创建对象然后存放数据

情况二:以json格式提交数据:application/json

1.当后端接口控制层使用@RequestBody注解标注参数对象,且对象属性有数组或者集合类型接收参数时,http请求体中的json格式数据,集合数组类型key,使用[]包含多个元素,map类型key,就使用{}包含多个键值对

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

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

相关文章

机器学习是什么?如何从入门到精通?

机器学习(Machine Learning)是一种从数据中自动学习模式和规律,并用于做出预测和决策的领域。它利用统计学、数学和计算机科学的方法,让计算机从大量数据中学习并不断优化模型,以实现自动化的决策和预测。 要从入门到…

在Linux中使用docker【中】(常见命令上)

在Linux中使用docker【中】(常见命令上) 一、Docker介绍二、在Linux中使用Docker的意义2.1 轻量级与资源高效2.2 快速部署与版本控制2.3 隔离与安全2.4 简化运维2.5 跨平台兼容2.6 持续集成与持续部署(CI/CD) 三、Docker的安装3.1…

win系统如何同时安装MySQL5和MySQL8

win系统如何同时安装MySQL5和MySQL8 文章目录 win系统如何同时安装MySQL5和MySQL81、准备好两种版本的数据库2、下载后解压到你指定的目录3、手动配置安装MySQL5和8安装MySQL53.1创建my.ini文件3.2生成data文件夹 安装MySQL83.1创建my.ini文件3.2生成data文件夹 4、配置环境变量…

汽车车灯照明灯具维修的常见误区有哪些呢?

汽车车灯照明灯具维修的常见误区有哪些呢? 汽车灯具维修的常见误区包括以下几个方面: 忽视车灯的日常保养:许多车主在日常使用中忽视了车灯的保养,只有当车灯出现故障时才进行维修。然而,定期检查和保养车灯是预防故障发生的重要…

蓝牙耳机什么牌子好?五款优质蓝牙耳机无广推荐!

​许多人向我询问关于蓝牙耳机的推荐,以及如何选购蓝牙耳机,有哪些性价比高的蓝牙耳机等问题。我已经从网络上搜集并比较了几十款耳机,现在我将分享一些我认为不错的蓝牙耳机。无论是在音质还是配置方面,这些耳机都是非常不错的。…

关于vue创建项目以及关于eslint报错的问题

vue创建完项目以后如果报parsing error no babel config file。。。这样的错误的话,关闭项目,用vscode进入项目中打开项目就可以解决了。 1 代码保存的时候会自动将单引号报错为双引号 导致eslint报错的问题, 解决思路: 在项目根…

启英泰伦「离线自然说」:让照明语音交互更自然、更便捷

随着科技的不断发展,智能家居已经成为现代生活的一部分。其中,智能照明作为智能家居的重要组成部分,为人们带来了更加便捷、舒适的照明体验。然而,传统的离线语音交互技术在智能照明领域的应用一直受到词条存储量的限制&#xff0…

有个朋友被骗了,大家要擦亮眼睛

1.引言 大家好,我是Leo哥🫣🫣🫣,昨天凌晨有个粉丝朋友找到Leo哥,咨询一些问题,现在的朋友们真卷呐,大半夜还在挑灯夜战。可无奈Leo哥12点之前已经睡了,身体为重&#xf…

智慧公厕:改变城市公共卫生管理的未来

现代城市发展快速,人口不断增加,公共卫生管理面临着严峻的挑战。传统公厕的建设、管理和使用模式已经无法满足日益提高的卫生与环保需求。然而,随着科技的进步与智能化的发展,智慧公厕正成为一种全新的解决方案,为城市…

R语言简介,R语言开发环境搭建步骤,R基础语法以及注释详解

R语言是一种用于统计计算与绘图的编程语言,由新西兰奥克兰大学的统计学家罗斯伊哈卡和罗伯特杰特曼于1993年发明。R语言是一种自由、免费、源代码开放的软件,属于GNU系统的一个分支,如今被广泛地应用于统计分析、数据挖掘等领域。 R语言的特…

数据库设计革命:逻辑模型的演变与面向对象的突破

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

demo破坏升级

如果我们刚才所解释的dom破坏形式不再是单纯的x一层结构,而是x,y这种形式,两层结构,我们该怎么办 举个例子吧 我们的想法是先取x再取y,想法很简单,现实很苦感,看看结果吧 取出来的是undefined…

设计模式——外观模式

外观模式类似迪米特法则,外观模式旨在将复杂的操作转化为一个接口给用户调用,省去了客户端细节的代码编写,以下的功能是存在三种模式,可选择开启或关闭,实现每一种功能需要开关不同的模式,如果将这些代码交…

怎么采集GBK或GB2312等特殊字符编码的网站数据

如果要采集的网站是GBK或GB2312等特殊字符编码,采集结果可能是一堆看不懂的文字或乱码,无法使用。 通常网页文章采集工具有字符编码选项,默认是UTF-8(现在大部分网站都是),改选为GBK或GB2312字符编码即可&…

[项目设计] 从零实现的高并发内存池(三)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 4.CentralCache实现 4.1 CentralCache整体架构 4.2 围绕Span的相关设计…

【深圳五兴科技】Java后端面经

本文目录 写在前面试题总览1、java集合2、创建线程的方式3、对spring的理解4、Spring Boot 和传统 Spring 框架的一些区别5、springboot如何解决循环依赖6、对mybatis的理解7、缓存三兄弟8、接口响应慢的处理思路9、http的状态码 写在前面 关于这个专栏: 本专栏记录…

【轮式平衡机器人】——TMS320F28069片内外设之Timer_IT(补:CCS程序烧录方法)

引入 Timer_IT 指的是 TMS320F28069 的定时器中断功能。在微控制器或数字信号控制器中,定时器是一个非常重要的外设,它可以用来产生固定时间间隔的中断,或者用来精确计算时间。 Timer_IT 的主要特点如下: 定时功能:…

React报错 之 Objects are not valid as a React child

原文链接: 1、React报错之Objects are not valid as a React child 2、Objects are not valid as a React child error [Solved] 作者:Borislav Hadzhiev 以下文中涉及到的链接均来自于该作者,他写了很多相关的文章,可以多看看他的…

综合素质保分卷一

10.根据《中华人民共和国预防未成年人犯罪法》的规定,强子多次实施了严重危害社会的行为后,经 由专门教育指导委员会评估同意,( D)会同公安机关可以决定将其送入专门学校接受专门教育。 A.父母或监护人 B.教师…

深度学习GPU环境安装(WINDOWS安装NVIDIA)

1.检测是否支持GPU环境 1.1.打开设备管理器 winows下面搜索设备管理器(或者从桌面"此电脑"——>右键点击——>"管理"打开) 1.2.查看本地显卡 在"设备管理器"——"显示适配器"中,如果没有&…