总结:前后端集合、数组类型数据交互底层原理,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,就使用{}包含多个键值对

相关推荐
lifallen1 分钟前
Flink Agents:Watermark 与事件时间 (Event Time) 在 Agent 算子中的演进分析
java·大数据·人工智能·语言模型·flink
量子炒饭大师8 分钟前
【C++11】Cyber骇客的 亡骸剥离与右值重构 ——【右值引用 与 移动语义】(附带完整代码解析)
java·c++·重构·c++11·右值引用·移动语义
Rick199310 分钟前
Java 接口高并发优化方案
java·性能优化·高并发
二月龙14 分钟前
Python 装饰器:从原理剖析到实战进阶
后端
uzong15 分钟前
架构师底层思维能力要求-这7种尽早练习
后端·程序员·架构
camellia15 分钟前
ubuntu(三)ubuntu18.04安装php7.3fpm
后端·ubuntu
qq_6285157616 分钟前
Java实现pdf导出
java·vue.js·react.js·pdf
我就是马云飞16 分钟前
SBTI 测试挤崩服务器:一个程序员视角的技术复盘
前端·后端·程序员
无巧不成书021817 分钟前
Java变量初始化全攻略:2026最新规范+新手避坑实战
java·开发语言·java基础·java变量初始化·java语法规范·var关键字