您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

六个调用第三方接口遇到的大坑

时间:2023-08-18 15:29:02  来源:微信公众号  作者:技术老男孩

今天的行情相信大家都感受到了,而面试也是越来越卷了,从技术八股卷到业务场景。今天呢,给大家带来了6个关于第三方接口调用相关的坑。问题点不难,但是面试中突然问到可能回答起来会有点懵,虽然都知道,但是不一定能回答好。

接下来呢,我会带领大家整体的过一遍,大家刷到了就留个印象,后边的笔记呢,我也准备好了,评论区扣1然后私信我领取哈。大家也可以来吐槽吐槽自己遇到的一些坑,让更多的小伙伴看到,一起交流。

闲话少说,接下来我们就进入正题。

域名访问不到

首先第一个问题,域名访问不通,一般我们在第一次对接第三方平台的API接口时,可能会先通过浏览器或者postman调用一下。

对于这个点分两个方面看,要么是我有问题,要么是对方有问题。

  • 自己的网络问题
  • 对方域名访问不通
  • 对方DNS解析有问题
  • 对方服务未部署等等
  • 对方设置了访问白名单

有可能你调用第三方平台的API接口时,他们的接口真的挂了,他们还不知道。还有一种最重要的情况,就是你的工作网络,是否可以访问这个外网的接口。

有些公司为了安全考虑,对内网的开发环境,是设置了防火墙的,或者有一些其他的限制,有些ip白名单,只能访问一些指定的外网接口。

如果你发现你访问的域名,在开发环境访问不通,就要到运维同学给你添加ip白名单了。

接口突然没返回数据

如果你调用第三方平台的某个API接口查询数据,刚开始一直都有数据返回。但突然某一天没返回数据了。但是该API接口能够正常响应。不要感到意外,有可能是第三方平台将数据删除了。

我对接完第三方平台的API接口后,部署到了测试环境,发现他们接口竟然没有返回数据,原因是他们有一天将测试环境的数据删完了。因此,在部署测试环境之前,要先跟对方沟通,要用哪些数据测试,不能删除。

还有一点,在我们自己程序中,我们永远不要相信三方平台的数据,如果出错了,我们要写容错策略。不能因为三方的错误,把自己系统给拖死。

token失效

有些平台的API接口在请求之前,先要调用另外一个API接口获取token,然后再header中携带该token信息才能访问其他的业务API接口。其实大多数我们自己的系统也是这么设计的。

在获取token的API接口中,我们需要传入账号、密码和密钥等信息。每个接口对接方,这些信息都不一样。

我们在请求其他的API接口之前,每次都实时调用一次获取token的接口获取token?还是请求一次token,将其缓存到redis中,后面直接从redis获取数据呢?

很显然我们更倾向于后者,因为如果每次请求其他的API接口之前,都实时调用一次获取token的接口获取token,这样每次都会请求两次接口,性能上会有一些影响。

如果将请求的token,保存到redis,又会出现另外一个问题:token失效的问题。

我们调用第三方平台获取token的接口获取到的token,一般都有个有效期,比如:1天,1个月等。

在有效期内,该API接口能够正常访问。如果超过了token的有效期,则该API接口不允许访问。

好办,我们把redis的失效时间设置成跟token的有效期一样不就OK了?

想法是不错,但是有问题。

你咋保证,你们系统的服务器时间,跟第三方平台的服务器时间一模一样?

我之前遇到过某大厂,提供了获取token接口,在30天内发起请求,每次都返回相同的token值。如果超过了30天,则返回一个新的。

有可能出现这种情况,你们系统的服务器时间要快一些,第三方平台的时间要慢一些。结果到了30天,你们系统调用第三方平台的获取token接口获取到了token还是老的token,更新到redis中了。

过一段时间,token失效了,你们系统还是用老的token访问第三方平台的其他API接口,一直都返回失败。但获取新的token却要等30天,这个时间太漫长了。

对于具体的错误码要设计重试机制:

为了解决这个问题,需要捕获token失效的异常。如果在调用其他的API接口是发现token失效了,马上请求一次获取token接口,将新的token立刻更新到redis中。

这样基本可以解决token失效问题,也能尽可能保证访问其他接口的稳定性和性能。

接口超时

系统上线之后,调用第三方API接口,最容易出现的问题,应该是接口超时问题了。系统到外部系统之间,有一条很复杂的链路,中间有很多环节出现问题,都可能影响API接口的相应时间。

这点很尴尬,别人的系统,咱们控制不了,你说让别人优化系统,人家立项调整上线估计就半个月,这还是情况好的,拖个半年的都有。别人体验的是你的系统,速度慢一点还能说得过去,要是老是超时失败反馈到用户层面。用户第一个找的就是你。。。。

作为API接口的调用方,面对第三方API接口超时问题,除了给他们反馈问题,优化接口性能之外。

我们更有效的方式,可能是增加接口调用的失败重试机制。

例如:

  • 如果接口调用失败,则程序会立刻自动重试3次。
  • 如果重试之后成功了,则该API接口调用成功。
  • 如果重试3次之后还是失败,则该API接口调用失败。

偷偷改参数了

我之前调用过某平台的API接口获取指标的状态,之前根据双方约定的状态有:正常和禁用 两种。

然后将状态更新到我们的指标表中。后来,双方系统上线运行了好几个月。突然有一天,用户反馈说某一条数据明明删除了,为什么在页面上还是可以查到。此时,我查我们这边的指标表,发现状态是正常的。

然后查看调用该平台的API接口日志,发现返回的该指标的状态是:下架。

什么鬼,心里已经问候了八百遍了。。。

跟该平台的开发人员沟通后,发现他们改了状态的枚举,增加了:上架、下架等多个值,而且没有通知我们。这就坑了。我们这边的代码中判断,如果状态非禁用状态,都认为是正常状态。

而下架状态,自动被判断为正常状态。经过跟对方沟通后,他们确认下架状态,是非正常状态,不应该显示指标。他们改了数据,临时解决了该指标的问题。后来,他们按接口文档又改回了之前的状态枚举值。

这里还有一种其他的方案,把枚举信息也通过一个接口返回,然后做展示,这样就能避免前面提到的问题了。

接口时好时坏

不知道你在调用第三方接口时,有没有遇到过接口时好时坏的情况。5分钟前,该接口还能正常返回数据。

5分钟后,该接口返回503不可用。又过了几分钟,该接口又能正常返回数据了。

可能情况:

  • 这种情况大概率是第三方平台在重启服务,在重启的过程中,可能会出现服务暂时不可用的情况。
  • 第三方接口部署了多个服务节点,有一部分服务节点挂了。也会导致请求第三方接口时,返回值时好时坏的情况。
  • 网关的配置没有及时更新,没有把已经下线的服务剔除掉。这样用户请求经过网关时,网关转发到了已经下线的服务,导致服务不可用。网关转发请求到正常的服务,该服务能够正常返回。

如果遇到该问题,要尽快将问题反馈给第三方平台,然后增加接口失败重试机制。



Tags:接口   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
马斯克脑机接口再造奇迹:瘫痪小伙意念玩赛车击败正常人
马斯克脑机接口公司的首位志愿者,又给我们展现了一段“绝活”:  肩部以下全无知觉的他,只靠脑中的一块芯片,就打起了马里奥赛车游戏。  只见赛车前进、转弯,控制得相当灵活。...【详细内容】
2024-03-26  Search: 接口  点击:(22)  评论:(0)  加入收藏
中国移动董事长杨杰谈脑机接口:假若真能实现,将真正实现人的永生
每经记者:杨卉 每经编辑:梁枭今日(3月21日)晚间,中国移动(SH600941,股价102.68元,市值2.2万亿元)披露了2023年业绩数据。公司营业收入突破万亿元大关,其中通信服务收入8635亿元,同比增...【详细内容】
2024-03-22  Search: 接口  点击:(12)  评论:(0)  加入收藏
瘫痪8年小哥植入马斯克脑机接口,狂打8小时「文明6」!Neuralink首个人类植入者直播来了
一名因潜水事故导致肩部以下瘫痪八年的 29 岁男子,正在借助脑机接口设备重温在线国际象棋和杀时间大作游戏《文明 6》。这是脑机接口公司 Neuralink 最新一场直播的内容,迅速...【详细内容】
2024-03-21  Search: 接口  点击:(23)  评论:(0)  加入收藏
脑机接口将为人类带来什么
◎实习记者 蒋 捷 实习生 杨茜茹怎样才能突破身体的限制,用意识与万物相连?在《西游记》中,孙悟空拥有凭借意念隔空取物的超能力。如今,脑机接口技术可以建立大脑与外部设备的直...【详细内容】
2024-02-29  Search: 接口  点击:(29)  评论:(0)  加入收藏
马斯克:首位脑机接口受试者可通过意念控制鼠标
当地时间周一(19日)晚上的一次活动中,马斯克透露了旗下的脑机接口公司Neuralink首位人类受试者的最新进展。他表示,该受试者已经完全康复,并可以通过大脑控制电脑鼠标。在社交媒...【详细内容】
2024-02-21  Search: 接口  点击:(32)  评论:(0)  加入收藏
如何防止被恶意刷接口?
前言在面试时,经常会被问一个问题:如何防止别人恶意刷接口?这是一个非常有意思的问题,防范措施挺多的。今天这篇文章专门跟大家一起聊聊,希望对你会有所帮助。图片1 防火墙防火墙...【详细内容】
2024-02-19  Search: 接口  点击:(38)  评论:(0)  加入收藏
芯片植入人脑待长期评估,马斯克脑机接口终极目标:人与AI共生
·伦敦国王学院植入式医疗设备教授认为,Neuralink在与参与者一起训练系统前,要给参与者时间恢复。真正的成功需要长期评估脑机接口的稳定性和对参与者的好处。·...【详细内容】
2024-02-01  Search: 接口  点击:(84)  评论:(0)  加入收藏
双头Type-C接口:解析充电方向的奥秘
随着科技的飞速发展,电子设备之间的连接与充电方式也在不断地革新。其中,Type-C接口以其高效、便捷的特性,逐渐成为了主流。特别是双头Type-C线,更是为用户带来了前所未有的便利...【详细内容】
2024-01-02  Search: 接口  点击:(147)  评论:(0)  加入收藏
光纤跳线接口型号有哪些
光纤跳线接口型号通常包括SC、LC、FC、ST、MT-RJ、MU、CWDM、DWDM等多种类型。以下是一些常见的光纤跳线接口型号: SC接口:SC接口是一种常用的短距离连接器接口,通常用于光纤到...【详细内容】
2023-12-15  Search: 接口  点击:(102)  评论:(0)  加入收藏
Spring6提供的四种远程接口调用神器!你知道那种?
1. 介绍Spring 6是一个非常强大的框架,它提供了许多工具和接口来简化远程接口调用。其中,WebClient、RestTemplate、HTTP Interface和RestClient是四种方式。WebClient是Sprin...【详细内容】
2023-12-11  Search: 接口  点击:(191)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条