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

本文探讨了前端操作中调用多个关联后台接口的常见问题,特别是如何处理接口调用失败的情况,以及如何确保前端在失败后仍能正常发起请求。通过实际案例,分享了在接口调用中应遵循的无状态原则,以及与后台沟通后的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于历史原因,前端的一次操作需要调用多个后台接口,以前写的一般都是调用一个的,或者哪怕是多个,接口之间也不会有依赖。但最近做的需求里,前端一次操作需要调用两个后台接口,且这两个接口是有关联的,需要先调用接口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. 前端要做到无状态,当接口调用失败后,要能够恢复,确保下次能发起请求,能正常调用接口

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值