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

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

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

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

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

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

1.客户端发送请求

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

2.服务端接收请求

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

3.服务端发送响应请求

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

4.客户端接收响应请求

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

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

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

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

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

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

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

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

xml 复制代码
url?car=华为&car=比亚迪&car=法拉利

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

xml 复制代码
url?car=极氪,吉利,五菱宏光

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

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

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

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

相关推荐
金銀銅鐵17 分钟前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
uzong1 小时前
我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误
后端
野生技术架构师2 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展
xiaobaoyu2 小时前
ssm知识点梳理
后端
小袁拒绝摆烂2 小时前
多表关联大平层转JSON树形结构
java·json
IT_陈寒3 小时前
Vite的public文件夹放静态资源?这坑我替你踩了
前端·人工智能·后端
浮游本尊3 小时前
合同同步逻辑
后端
子兮曰3 小时前
别让爬虫白嫖你的导航站了:纯免费,手把手实现加密字体防爬
前端·javascript·后端
阿苟3 小时前
JAVA重点难点
后端