当前位置: 首页 > news >正文

总结:前后端集合、数组类型数据交互底层原理,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.lryc.cn/news/313791.html

相关文章:

  • 2024蓝桥杯每日一题(前缀和)
  • 2007-2022年上市公司迪博内部控制评价缺陷数量数据
  • JAVA虚拟机实战篇之内存调优[4](内存溢出问题案例)
  • qt自定义时间选择控件窗口
  • 如何不解压直接读取gzip文件里面的文件
  • python 截取字符串string.split
  • SpringBoot+Vue实现el-table表头筛选排序(附源码)
  • Linux学习之线程
  • 【JavaEE初阶】 JVM类加载简介
  • .NET Core依赖注入(IoC)不使用构造函数实现注入
  • WinSCP下载安装并结合内网穿透实现固定公网TCP地址访问本地服务器
  • 内联函数|auto关键字|范围for的语法|指针空值
  • 家用洗地机哪个型号好用?介绍几个值得考虑的品牌
  • 力扣-数组题
  • 将List转换为数组或者将数组转换为List,如果改变了原始值,转换后的数据会发生改变吗?
  • 七彩虹@电脑cpu频率上不去问题@控制中心性能模式cpu频率上不去@代理服务器超时@账户同步设置失败
  • 抖音怎么开店?抖音小店开店流程讲解,可收藏!
  • leetcode 热题 100_轮转数组
  • 华为设备小型园区网方案(有线+无线+防火墙)
  • 硬件工程师入门基础知识(四)多层陶瓷电容应用(一)
  • python的虚拟环境
  • 设计模式——2_4 中介者(Mediator)
  • C语言教程(一)——输出、数据类型、表达式、条件判断、循环
  • Prompt Engineering、Finetune、RAG:OpenAI LLM 应用最佳实践
  • [C语言]——分支和循环(4)
  • 【LeetCode】392. 判断子序列(简单)——代码随想录算法训练营Day54
  • 1. Typescript入门
  • 【Git】merge时报错:refusing to merge unrelated histories
  • 树状数组+离散化求逆序对超详细讲解!
  • 《解密云计算:企业之选》