当前端的一次操作会调用多个有关联的后台接口

2023-10-27

由于历史原因,前端的一次操作需要调用多个后台接口,以前写的一般都是调用一个的,或者哪怕是多个,接口之间也不会有依赖。但最近做的需求里,前端一次操作需要调用两个后台接口,且这两个接口是有关联的,需要先调用接口A,再调用接口B。

一开始直接写两个Promise,一个成功后调用另一个,类似于这样子

 fetch(urlA)
	 .then((res) => {
	 	if (res.ret == 0) {
		 	fetch(urlB)
			 	.then(() => {
					///
				})
				.catch(e) {
				}
		}

	 })
	 .catch(e){
	 }

一切看上去都这么美好,直到测试同学发现第二个接口一直调用不了。

才发现自己没考虑失败情况,如果接口A调用失败了,接口B是不会调用的。那么假设用户第一次操作,调用接口A成功,但后台因为某些原因B接口临时挂了,或者因为网络问题B接口调用失败了。用户第二次操作时,接口A因为保护机制,之前已经调用过一次了,这次错误码会返回非0,这样就调用不到接口B了。而且不管用户怎么重试,都调用不到。

与后台协商后,决定采用接口A结果返回非零也去尝试调用接口B,因为前端可能因为重启app、网页、小程序,无法确保是否调用过接口A,所以用户的操作流程是调用接口A,不管接口A是否返回成功,都去调用接口B,后台对接口B的调用进行判定,会判断接口A是否已经调用,未调用则不处理。

事后回想,其实这应该是常识:

  1. 接口调用可能失败,一定要考虑失败的情况
  2. 一次操作调用多个关联的接口,要考虑若干接口可能调用失败的所有情况
  3. 前端要做到无状态,当接口调用失败后,要能够恢复,确保下次能发起请求,能正常调用接口

在前端方面,踩的坑还不够多,导致这种常识现在才知道……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当前端的一次操作会调用多个有关联的后台接口 的相关文章

  • spring-session整合redis原理 排查失效原因

    根据网上配置了一个springsession整合redis作为session后 发现session获取失败 redis里面是有值 登录模块设置进去也能获取的到 但是其他的服务就获取不到 记录一下 跟着源码探寻为何失败 auth服务的配置 引
  • C++开发过程笔记~~持续更新~~

    文章目录 1 为什么只有 析构函数不论基类和派生类都用到了virtual关键字 2 c inline使函数实现可以在头文件中 避免多重定义错误 3 this gt 4 调用另一个cpp文件中函数 多个 cpp文件编译 5 有空看看开源项目g
  • Java 读取AD域用户,解决只能最大查询到1000(MaxPageSize)记录数问题

    Java使用LdapContext查询AD域用户 发现只能查询到1000个 不同系统这个数值可能不同 现象就是最多只能查到固定数量 查询资料发现这是受AD域设置的MaxPageSize参数影响 解决办法有两种 方式一 直接扩大AD域的Max
  • 当前端的一次操作会调用多个有关联的后台接口

    由于历史原因 前端的一次操作需要调用多个后台接口 以前写的一般都是调用一个的 或者哪怕是多个 接口之间也不会有依赖 但最近做的需求里 前端一次操作需要调用两个后台接口 且这两个接口是有关联的 需要先调用接口A 再调用接口B 一开始直接写两个
  • Feign远程调用丢失请求头问题

    在业务中 需要使用A B两个模块 这些模块使用了SpringSession共享Session数据 在B模块中的业务需要用户登录后才能操作 当A调用B的业务时 在B模块中获取不到用户的Session信息 导致B模块判定该请求用户没有登录导致A
  • 经验:在Maven项目中,打包时指定 main class 的配置(亲测有效)

    Maven打包的时候 是不是经常会出现 没有主清单属性 的报错 以下的配置 放在 pom xml 最后的 lt build gt 中 就能自定义main函数所在的类 然后打包了
  • 记Tomcat删除war包问题

    由于不清楚tomcat部署原理 误认为tomcat部署完成之后 可以把war删除 然后以后每次部署 只需要增量部署就行了 然后还怕由于war包的存在 增量部署的内容会被覆盖掉 不清楚war包什么时候会自动重新部署 于是 rm rf mm w
  • python web开发笔记--如何采用uwsgi来部署你的Django项目

    接上一文 python web开发笔记 MAC上Django uwsgi构建总结 最近对于采用uwsgi进行成功部署自己的项目已经成功搞定 因此写下这篇博客 这绝对是一篇值得需要的人读的用心好博文 废话不多少 开始正题 1 进入你的项目目录
  • Xcode error: Cannot link directly with dylib/framework, your binary is not an allowed client of /

    文章目录 编译报错 Trust App 编译报错 Mac 机子 数据线连接 iPhone13 通过 Appium 里的 appium webdriveragent WebDriverAgent xcodeproj 工程 来编译可以在 iPh
  • 百度搜索中url的参数解析

    转载请注明 藏羚骸的博客 百度搜索中url的参数解析 小伙伴们在写爬虫程序的时候 可能会用到部分参数使用 这里整理了 百度搜索中url的参数解析 免费查询快递物流 wd 查询的关键词 pn 已显示的结果条数 即当前页从pn条记录开始显示 该
  • element时间抽el-timeline触发点击事件的方法

    直接在element的时间轴组件el timeline item上挂在点击事件是不生效的 只有点击在连接线的位置才能触发 这是因为在点击过程中 可能点击到的是el timeline item的子元素 比如el timeline item t
  • Android 使用 Jenkins 实现自动化打包【流程】&【踩坑】

    引言 每个Android开发应该都有经历过正在码代码的时候突然被打断要求打个啥啥环境啥啥配置的安装包 然后就得暂存代码 切换分支 更改配置 等待build balabala 往大了说就是浪费时间消耗员工价值对公司的不负责 胡扯 往小了说就是
  • dlopen “no suitable image found ”问题之解决

    做一个练手小项目 基于 react transform boilerplate 的demo 克隆 react transform boilerplate项目 装包 package json中的包 style loader css loade
  • springboot启动报错Error creating bean with name requestMappingHandlerMapping defined in class path resou

    springboot启动报错 Error creating bean with name requestMappingHandlerMapping defined in class path resource org springframe
  • 将SSE指令转换为ARM NEON指令

    相关资料 sse指令集 sse指令解释 sse2neon仓库 可以在sse2neon h中寻找对应的neon指令转换方法 注意事项 将sse指令转换为arm neon指令往往很难起到优化作用 甚至可能产生负优化 因此该部分优化仅供参考 mm
  • Java Stream peek的一些坑

    众所周知在Java中使用Stream能够很好地帮我们流处理对象 而Stream中有一个peek方法 它与map最大的区别是它没有返回值 一开始我是简单地把它当做一个void类型的处理方法去使用的 但是后来却发现程序执行到此处时 不进peek
  • 【Dexie.js 踩坑】Failed to execute ‘transaction‘ on ‘IDBDatabase‘

    查了很多资料 显示都是 indexedDB 的报错 说是异步操作无法保证下一次操作时上一步已经完成 试了很多按顺序执行的方法都无效 再后来试着解决控制台显示的警告提示我版本控制有问题 我就把版本升级了 问题迎刃而解 Dexie 官方文档是英
  • 解决使用SpringBoot上传文件大小受限问题

    今天在做项目学习的过程中 需要用到文件上传 启动项目正常 访问上传post请求突然报出了一个异常 特此记录一下 1 控制台异常 org springframework web multipart MaxUploadSizeExceededE
  • Mybatis plus 数据加密

    数据加密重中之重个铁铁 先准备加解密工具类 package com byyl web utils import org springframework util Base64Utils import javax crypto Cipher
  • 解决mac端TypeError: transpileDependencies.map is not a function

    运行环境 问题详情 解决方案 在我使用yarn安装包的时候是正常安装的 可是在yarn serve的时候提示了如下错误 这个时候需要在vue config js中加入这个配置 transpileDependencies 与devServic

随机推荐

  • shell脚本——正则表达式,grep,awk

    目录 正则表达式 1 元字符 字符匹配 2 表示次数 3 位置锚定 4 分组或其他 grep awk的用法 1 基础用法 2 awk常见的内置变量 FS 指定输出的每行文本的字段分隔符 OFS 输出时的分隔符 NF 当前处理的行的字段个数
  • chromeOS介绍

    目录 概述 支持程序 功能 概述 chromeOS 是由Google设计基于Linux核心的作业系统 并使用Google Chrome浏览器作为其主要使用者介面 因此 Chrome OS主要支持Web应用程式 2016年起开始陆续相容And
  • 每日一题系列:不要二

    二货小易现有一个W H的网格盒子 网格的行编号为0 H 1 网格的列编号为0 W 1 每个格子可放1块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x2 y1 y2
  • ModuleNotFoundError: No module named ‘scipy.misc.pilutil‘

    python 3 8 pillow 6 0 0 scipy 1 7 3 报错后 有老哥说 pip scipy 1 1 0 原理是scipy中没有imread了 原语句 from scipy misc pilutil import imrea
  • [人工智能-深度学习-41]:开发环境 - GPU进行训练安装与搭建(Pytroch、TensorFlow、Nvidia CUDA)详细过程

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121241620 目录 第1章 英伟达
  • wireshark抓包筛选固定流并转发

    wireshark抓包筛选固定流并转发 1 筛选固定ip或端口 2 复制数据 在弹框中选择原始数据 全选数据并粘贴保存成txt 3 发送数据 打开网络调试助手 点击发送文件 选择保存的文件并发送 即可实现数据转发
  • Windows 10中的Docker实践

    题记 微软在人们的心目中就是商业化的代名词 操作系统 Office 数据库 Azure等可能是我们耳熟能详的 当然微软也在布局更多的技术王国 开源界对微软一直嗤之以鼻 指责其闭源行为影响技术的发展 不过微软现在也在积极改变以往的傲慢态度 慢
  • 若依系统基于nacos注册中心搭建

    目录 nacos问题 项目内部问题 MySQL的问题 redis的问题 操作流程https blog csdn net maitian 2008 article details 118579638 ops request misc 257B
  • Quartus II 13.0波形仿真

    先放结论 Quartus II 13 0有自带的仿真工具 能实现波形仿真 之前一直找不到关于Quartus II 13 0的波形仿真 然后百度的都是说quartus ii 9 0之后的版本就没有这个功能了 只能再下一个modelsim之类的
  • unity 第四期

    1 在Unity里3个update FixedUpdate Update LateUpdate 的用法和区别 9ria游戏开发社区的黄祖祥的文章 关于Unity3D中的Update LateUpdate FiexdUpdate http b
  • 《Python数据分析基础教程:NumPy学习指南:第二版》读书笔记

    内容 主要介绍了NumPy库中的函数 组成方式 用非常零散的知识点串联成章节 内容摘要 极简地展示了章节中所运用的函数 第一章 arrange函数创建NumPy数组 第二章 NumPy特性 在NumPy中 复数的虚部是用j表示的 如果数组中
  • go基础详解2-go run & test

    一 go run 编译运行一个main 包 package 常用的运行方式如下 go run go run hello go run 后面接路径 该路径 不含子路径 下所有的go源文件都属于main包 go run filename1 fi
  • Jmeter性能综合实战 —— 签到及批量签到

    提取性能测试的三个方面 核心 高频 基础功能 签 到 请 求 步 骤 1 准备工作 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 1 创建线
  • docker查看日志方式

    docker查看日志方式 docker logs tail 1000 lt 容器id 名称 gt 查看容器前多少行的日志 docker compose f docker compose app yml logs f 查看所有容器的运行日志
  • Dubbo Main启动方式浅析

    服务容器是一个standalone的启动程序 因为后台服务不需要Tomcat或JBoss等Web容器的功能 如果硬要用Web容器去加载服务提供方 增加复杂性 也浪费资源 服务容器只是一个简单的Main方法 并加载一个简单的Spring容器
  • Latex:公式输入序号及多个公式一起编号

    begin equation begin split a b c 说明 这里双斜杠表示换行 在等号前面加 符号表示上下公式等号对齐 m h g label 公式1 说明 label 表示这组公式的记号 方便后续引用 end split en
  • 内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问

    文章目录 1 前言 2 本地网站搭建 2 1 环境使用 2 2 支持组件选择 2 3 网页安装 2 4 测试和使用 2 5 问题解决 3 本地网页发布 3 1 cpolar云端设置 3 2 cpolar本地设置 4 公网访问测试 5 结语
  • 视频编解码发展历程(从AVC到HEVC再到VVC)(一)

    视频编解码发展历程 从AVC到HEVC再到VVC 一 概述 视频编码标准介绍 概述 在过去的17年里 自2003年确定现在仍占主导地位的 H 264 运动图像专家组 MPEG 4 高级视频编码 AVC 标准的第一个版本以来 已经又开发了两个
  • python 因果推断_因果推理入门指南-必须的7个步骤

    原标题 因果推理入门指南 必须的7个步骤 社会科学的研究 不管是经济学 社会学 还是心理学都离不开数据的支持 虽说数据科学只是工具 但对工具的误解会导致人们问出错误的问题 如今我们知道了从数据中 可以通过系统化的算法 定量的去描述因果关系
  • 当前端的一次操作会调用多个有关联的后台接口

    由于历史原因 前端的一次操作需要调用多个后台接口 以前写的一般都是调用一个的 或者哪怕是多个 接口之间也不会有依赖 但最近做的需求里 前端一次操作需要调用两个后台接口 且这两个接口是有关联的 需要先调用接口A 再调用接口B 一开始直接写两个