总结:前后端集合、数组类型数据交互底层原理,SpringBoot框架解析
- 一·前后端信息交互本质:
- 二·前后端一次请求应答的基本流程如下:概述
- 三·前后端集合、数组类型数据交互底层原理:
- 四·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.两台电脑可以通过收发电磁波、控制网线电路开关等基础物理设施,就可以进行物理层面的电信号交互,电信号又可以通过各种传感设备转为对应的显示数据
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=极氪,吉利,五菱宏光