码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 总结:前后端集合、数组类型数据交互底层原理,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格式文本转为电磁波发送出去
    
    • 1

    2.服务端接收请求

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

    3.服务端发送响应请求

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

    4.客户端接收响应请求

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Coremail受邀出席创新生态融合赋能智慧校园建设与网络安全研讨会
    Leetcode_729_我的日程安排表1_线段树/思维
    备忘录模式(Memento Pattern)
    20个实用Python自动化脚本技巧 + 推荐:《Python网络爬虫入门到实战》宝典
    php代理刷访问量(附源码)
    华为机试 - 完全二叉树非叶子部分后序遍历
    简单的网页制作期末作业——电影泰坦尼克号(4页)
    网络编程实战(一)
    引领汽车潮改新风向,看“菱大师”柳州炫技
    在安装Centos时如何选择磁盘的分区?
  • 原文地址:https://blog.csdn.net/weixin_48033662/article/details/136424781
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号