10、偷偷改参数了我之前调用过某平台的API接口获取指标的状态,之前根据双方约定的状态有:正常和禁用 两种 。
然后将状态更新到我们的指标表中 。
后来,双方系统上线运行了好几个月 。
突然有一天,用户反馈说某一条数据明明删除了,为什么在页面上还是可以查到 。
此时,我查我们这边的指标表,发现状态是正常的 。
然后查看调用该平台的API接口日志,发现返回的该指标的状态是:下架 。
what?
这是什么状态?
跟该平台的开发人员沟通后,发现他们改了状态的枚举,增加了:上架、下架等多个值,而且没有通知我们 。
这就坑了 。
我们这边的代码中判断,如果状态非禁用状态,都认为是正常状态 。
而下架状态,自动被判断为正常状态 。
经过跟对方沟通后,他们确认下架状态,是非正常状态,不应该显示指标 。他们改了数据,临时解决了该指标的问题 。
后来,他们按接口文档又改回了之前的状态枚举值 。
11、接口时好时坏不知道你在调用第三方接口时,有没有遇到过接口时好时坏的情况 。
5分钟前,该接口还能正常返回数据 。
5分钟后,该接口返回503不可用 。
又过了几分钟,该接口又能正常返回数据了 。
这种情况大概率是第三方平台在重启服务,在重启的过程中,可能会出现服务暂时不可用的情况 。
还有另外一种情况:第三方接口部署了多个服务节点,有一部分服务节点挂了 。也会导致请求第三方接口时,返回值时好时坏的情况 。
此外还有一种情况:网关的配置没有及时更新,没有把已经下线的服务剔除掉 。
这样用户请求经过网关时,网关转发到了已经下线的服务,导致服务不可用 。网关转发请求到正常的服务,该服务能够正常返回 。
如果遇到该问题,要尽快将问题反馈给第三方平台,然后增加接口失败重试机制 。
12、文档和接口逻辑不一致之前还遇到一个第三方平台提供的API查询接口,接口文档中明确写明了有个?
?dr?
?字段表示??删除状态?
? 。有了这个字段,我们在同步第三方平台的分类数据时,就能够知道有哪些数据是被删除的,后面可以及时调整我们这边的数据,将相关的数据也做删除处理 。
后来发现有些分类,他们那边已经删除了,但是我们这边却没删除 。
这是啥情况呢?
代码逻辑很简单,我review了一下代码,也没有bug,为什么会出现这种情况呢?
追查日志之后发现,调用第三方平台获取分类接口时,对方并没有把已删除的分类数据返回给我们 。
也就是说接口文档中的那个dr字段没有什么用,接口文档和接口逻辑不一致 。
这个问题估计好多小伙伴都遇到过 。
如果要解决这个问题,主要的方案有两种:
- 第三方平台按文档修改接口逻辑,返回删除状态 。
- 我们系统在调用分类查询接口之后,根据分类code判断,如果数据库中有些分类的code不在接口返回值中,则删除这些分类 。
之前是另外一个同事对接的接口,后来他离职了 。
发票识别功能上线,使用了很长一段时间,一直都没有出问题 。
后来,某一天,生产环境用户反馈发票识别不了了 。
我查询了相关服务的日志,没有发现异常,这就奇怪了 。
打开代码仔细看了一下,发现那位同事的代码中调用第三方的API接口,接收响应数据时,直接转换成了对象,没有打印当时返回的字符串 。
莫非,接口返回值有问题?
后来,我增加了日志,打印出了该接口真正的返回内容值 。
原因一下查到了,原来是欠费了 。
如果出现该了异常,百度的API接口返回的数据结构,用之前那位同事的实体有些参数没法获取到 。
这是一个不小的坑 。
我们在接收第三方API接口返回数据时,尽可能先用字符串接收返回值,然后将字符串转换成相应实体类,一定要将该返回值在日志中打印出来,方便后面定位问题 。
推荐阅读
- 我们和OpenAI联创聊了聊GPT的当下局限:两年后可能就没了
- 选洗菜盆,我发誓坚持“8选8不选”,花钱买的教训,实用太关键!
- 鸡肫怎做好吃
- 玉籽料|我想要一块传家宝玉!
- |我很敬佩那些一直做原矿紫砂壶的人
- 侯佩岑|44岁侯佩岑庆祝结婚12周年,晒全家福甜蜜示爱老公:谢谢你娶我
- 谢贤|coco谈和谢贤分手真相: 谢贤老了最多坚持3分钟, 是真满足不了我?
- 十大致癌食物黑名单
- 郑秀文|郑秀文夺影后感谢许志安和家人:我终于冲线了,多谢你们
- 宋慧乔|宋慧乔到底有多美?白衬衫+半扎马尾,说她30岁我都信