0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

前后端数据传输约定探讨

京东云 来源:jf_75140285 作者:jf_75140285 2024-07-08 19:10 次阅读

1 目的

稳定可靠,降本增效

wKgaomaLyTaAfRcVAAH_gfOD8Z0369.png


前后端数据传输约定旨在提升系统稳定性、可靠性,降低线上线下bug率;并提升研发效率、降低沟通成本、降低延期率。是确保项目前端和后端开发顺利进行的重要规约之一,定义了前端与后端交互的规则和标准。


2 数据传输约定

2.1 数据向后端传递,及在前端流转

wKgZomaLyTeAUU7FAAHuKf2Tl_M572.png


1.前端URL传参:原则上只允许传id参数,尽量不要在URL中传入中文参数及有关状态判断参数。

2.数据提交:明确表单数据类型,包括是否必填校验、multipart数据以及其他复杂类型数据。

3.参数规范:详细描述接口所需的参数,包括参数名称、类型、是否必填、默认值、示例等。


2.2 数据从后端返回到前端

wKgaomaLyTeAZIlUAAGTvFPVC2E751.png


1.正常数据格式:需定义单个数据、复杂数据、可能有的数据、无数据、分页数据、校验数据、特殊数据以及认证加密数据的格式。

2.异常数据格式:需包含异常状态码、异常名称、数据格式、错误类型码、异常发生位置以及异常描述,以便于前端正确处理和显示错误信息

3.性能要求:接口的响应时间、并发处理能力、健壮性、稳定性、故障恢复、安全性等性能指标。

【措施】

•脚手架统一,建项目等。

•错误码标准:与http code对应建立统一标准的code码表示,标识错误码内容(规则,位数默认规则)和格式。


3 文档沟通规范

前后端服务接口应文档化,确保接口与文档先于前端开发,以便开发人员能够准确理解和使用接口。文档应包含接口地址、请求方式、请求参数、返回结果等详细信息;其中请求方式和返回结果需依据产品逻辑确定。

wKgZomaLyTqAKyquAACMs30uhbo277.png


1.RESTful API设计风格:这是一种基于HTTP协议的API设计风格,通过使用HTTP动词、URI和HTTP状态码来表示对资源的操作和请求结果,使接口设计更加简洁明了。

2.URL规范:接口的URL结构,包括基础路径、接口名以及参数传递方式(如查询参数、表单数据、JSON格式的请求体等)。

3.接口版本控制:为了保证接口的兼容性和可维护性,必要时可对接口进行版本控制。可以在URI中加入版本号或使用请求参数来区分版本信息。

4.参数传递方式:明确参数的传递方式,包括GET、POST、PUT、DELETE等方式以及参数的格式(如JSON、表单等)。

5.返回结果格式:接口返回结果应使用统一的格式,包括状态码、错误信息、数据等。建议使用JSON格式,以方便表示复杂的数据结构。

【措施】

•接口文档工具统一和推广:可确定选用Japi或藏经阁

4 架构设计和数据结构

4.1 前端规则

wKgaomaLyTuAbd3bAADrSBchd6o315.png


1.体验优先:尽可能优化用户体验操作步骤,满足产品要求,并及时提出交互建议。

2.SDK版本维护:多个系统调用前端地址或sdk时,需做好版本维护,特殊场景最好固定特殊版本,严格控制通用版本的升级。

3.防抖节流:前端请求防抖策略,函数节流策略。

4.代码合并:代码合并至main分支时,务必保证自己的代码是基于main分支的最新提交拉取的代码(可以先从main再拉出个hotfix分支,先和并至hotfix分支后,再合并至main分支)。

【措施】

•行云代码合并检测

•加版本号,严格版本管理。

4.2 架构方案设计

1.架构设计和代码实现解耦:架构设计根据产品逻辑设计系统功能的架构方案、数据传输交互、技术选型、逻辑方案;代码实现则主要侧重于具体程序编码、规范、具体数据处理。

wKgaomaLyTyAApvOAAFaKFboQPg515.png


1.前端逻辑扩展性:前端设计依据产品交互逻辑,需考虑交互逻辑扩展性;数据处理中需注意深拷贝问题。

wKgZomaLyTyASrb9AAD9A1ZKpwQ079.png


1.后端接口易用性:后端设计可根据自身要求定制,但给到前端接口的数据结构需要依据产品业务逻辑。

2.前后端分离:提前约定数据结构,并按数据结构进行开发。

3.前端直接暴露公网的,要做好安全防范,防止XSS,CSRF等攻击,涉及数据隐私、传输、攻击的续作加密解密处理。后端接口则需做SSRF攻击防范。

【措施】

•前后端耦合系统做分离(开发分离,发布分离)

•重点类型规则:金额、时间等重点核心数据枚举类型。

4.3数据结构设计

wKgaomaLyT2AWRwtAAFQI26TXCE830.png


1.数据结构恒定性:前后端约定好的字段和类型不应轻易改动,若有改动需及时提前告知对方。

2.鲁棒边缘性设计:接口需考虑极端情况下的限定,定义必须清楚(如不同类型字段为空时,为null时,为无穷大时,为负时等)。

3.数据结构简洁:数据接口字段应遵循尽明确,尽简单,尽少量,尽少层,尽可能都用,可扩展。

4.数据类型一致性:前后端数据类型一致性。

5.【特别约定】:后端不能用int类型接受前端传值(int默认值为0);若用Int类型接收,则务必进行包装处理异常。

4.4 安全与健壮

wKgZomaLyT6Ac6ZqAAEy5NbqXFk874.png


1.前后端接口数据校验:重要数据传输(如费用资金等),后端须做接口兜底校验,同时前端需要做逻辑校验(甚至加解密机制);还包括三方接口使用的兜底处理和预警。

2.请求头约定:前后端应约定请求头,而不是只用系统默认(jdk不同版本接受数据的默认请求头可能不一样)。

3.接口一致性:同一功能的增加和修改等应尽量为同一接口;若否,则需说明理由。

4.日志记录:接口逻辑需要清晰必要的日志进行记录,方便查询。

5.接口防抖,幂等:必要时后端服务也需做防抖(如用户点错某一逻辑,又快速点击另一逻辑等)。。

6.混沌实验:必要时,需要做混沌工程实验,演练最小化“爆炸半径”。

4.5 DSL规约

根据对DSL(Domain Specific Language)的使用情况,选择sdl规约的分级策略;即根据具体业务逻辑的复杂度来考虑遵循规约的量级。

wKgaomaLyT6AGPw9AADjydwUols299.png


•对于只展示不修改类场景,前端可直接做好dsl存给服务端即可。如cdp的图状逻辑展示。

•对于前后端都需要使用的dsl数据,尽可能把数据分成实体数据和展示数据两部分,前后端需共同维护实体数据;尤其单线流程场景。如领航者的流程编排。

•对于前后端都需要用到的更复杂流程逻辑判断类的产品,则需要维护dsl的不同版本。如摹略的画布逻辑。

wKgZomaLyT-AMLGmAADYPmLoUak895.png


1.一套:前后端共同维护并解析使用同一套数据。两部分:数据最好能区分前端自用字段和前后端公用字段。

2.约定好前端自用字段增加的规则和限制(长度等)。

3.共同约定公用字段的增减规则(类型和层级等)。

4.更复杂场景里,可用不同版本,或协议版本;也可以只存1部分数据,前后端分别解析,维护不同版本。


{ code:'',或数字约定 data:{}, msg:'' }

思路

5 实践方式

新项目迭代

对于新项目可直接根据具体需求依照本规范执行即可。执行过程中可根据需求的实际情况得到具体产品线的细则。

老项目升级

1.对于老项目,前后端需经过阶段性自查,尤其针对这些可能直接影响系统稳定性的核心条款,必须严格自查。

2.自查后,记录系统存在的相应隐患问题,再做出更新计划,最好在接下来的迭代中就能完成;必要时,也可按Q或H维度计划完成。

3.其他规约条款,尽可能的形成本系统的实际规范约定,前后端共同遵守,提高沟通效率,降低bug率。

6 总结

前后端数据传输约定是确保互联网产品顺畅运行的关键环节,它涉及到数据的格式、传输方式、安全性等多个方面。本文主要探讨交互的具体环节。

总之,根据具体业务的不同,以及技术的不断发展完善,我们还需要不断在实践中完善和改进这些规约,以适应新的需求和挑战。

欢迎兄弟们共同交流探讨

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1739

    浏览量

    64312
收藏 人收藏

    评论

    相关推荐

    网络数据传输速率的单位是什么

    网络数据传输速率的单位是 bps(bit per second) ,即比特每秒,也可以表示为b/s或bit/s。它表示的是每秒钟传输的二进制数的位数。比特(bit)是计算机中数据量的单位,也是信息论
    的头像 发表于 10-12 10:20 158次阅读

    高速串行总线,数据传输离不开它!#高速串行总线 #电路知识 #数据传输

    电路数据传输
    安泰仪器维修
    发布于 :2024年08月20日 15:42:00

    SDIO支持哪些数据传输模式?

    1、当 SDIO 时钟频率为 25 MHZ 时,总线速度可达多少? 还是 832MBPS? 2、SDIO 支持哪些数据传输模式? --1 位、2 位、3 位或 4 位? 3、哪个 SDIO 引脚具有中断功能? --DAT[0]? [1]?[2]?[3]?
    发表于 07-22 06:37

    DTU如何运用VPN加密技术提升数据传输安全?

    在当前的物联网时代,数据的安全传输显得尤为重要。DTU作为一款通过无线通信网络进行传送的无线终端设备,其在气象、水文水利、地质等行业的应用中,对于数据传输的安全性有着极高的要求。本文将探讨
    的头像 发表于 07-04 14:53 330次阅读
    DTU如何运用VPN加密技术提升<b class='flag-5'>数据传输</b>安全?

    以太网接口的数据传输原理详解

    以太网接口作为计算机网络中的关键组成部分,承担着数据传输的重要职责。在了解以太网接口的数据传输原理之前,我们首先需要明确以太网的基本概念和工作机制。以太网是一种广泛应用的局域网技术,它基于CSMA
    的头像 发表于 05-29 16:47 1225次阅读

    GMSL技术 实现高带宽、低延迟和高可靠性数据传输# ADI# GMSL# 汽车# 数据传输

    adi数据传输电机
    Excelpoint世健
    发布于 :2024年05月17日 16:34:25

    请问NFC数据传输如何保证数据安全?

    NFC数据传输如何保证数据安全
    发表于 04-07 06:18

    DTU的多种协议,解锁数据传输的无限可能

    DTU,即数据传输单元,是一种在物联网(IoT)网络中常用的设备,主要用于在传感器和智能设备之间进行数据传输。DTU使用多种协议来实现这一目标,这些协议不仅提高了数据传输的效率,还增强了网络的安全性
    的头像 发表于 03-01 11:00 642次阅读
    DTU的多种协议,解锁<b class='flag-5'>数据传输</b>的无限可能

    springboot前后端交互流程

    Boot 进行开发时,前后端交互是一个非常重要的部分,本文将详细介绍 Spring Boot 前后端交互的流程。 前后端交互的基本原理 在前后端交互的过程中,前端负责向
    的头像 发表于 11-22 16:00 1857次阅读

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之间数据交互
    的头像 发表于 11-15 17:23 1050次阅读

    AXI数据传输读写数据结构

    在 AXI 数据传输过程中,主要涉及到 •窄位宽数据传输(Narrow Transfer) •非对齐传输(Unaligned Transfer) •混合大小端传输(mix-endian
    的头像 发表于 10-31 16:17 1385次阅读
    AXI<b class='flag-5'>数据传输</b>读写<b class='flag-5'>数据</b>结构

    基于GPRS的无线数据传输嵌入式系统设计

    电子发烧友网站提供《基于GPRS的无线数据传输嵌入式系统设计.pdf》资料免费下载
    发表于 10-27 10:25 0次下载
    基于GPRS的无线<b class='flag-5'>数据传输</b>嵌入式系统设计

    基于ARM的GPRS无线数据传输监控系统设计

    电子发烧友网站提供《基于ARM的GPRS无线数据传输监控系统设计.pdf》资料免费下载
    发表于 10-27 09:41 0次下载
    基于ARM的GPRS无线<b class='flag-5'>数据传输</b>监控系统设计

    基于ARM与GPRS的无线数据传输系统的设计

    电子发烧友网站提供《基于ARM与GPRS的无线数据传输系统的设计.pdf》资料免费下载
    发表于 10-27 09:15 0次下载
    基于ARM与GPRS的无线<b class='flag-5'>数据传输</b>系统的设计

    基于GPRS的无线数据传输系统的研究与设计

    电子发烧友网站提供《基于GPRS的无线数据传输系统的研究与设计.pdf》资料免费下载
    发表于 10-27 09:10 0次下载
    基于GPRS的无线<b class='flag-5'>数据传输</b>系统的研究与设计