首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >接口请求返回成功,但数据为空,可能是这个原因

接口请求返回成功,但数据为空,可能是这个原因

作者头像
大风写全栈
发布2024-12-09 10:51:29
发布2024-12-09 10:51:29
1.1K0
举报
文章被收录于专栏:锤子代码锤子代码

网闸差点背锅

有一个服务,需要请求接口。大概流程是前台->网闸->反向代理->服务A->本地远程服务B->外部远程服务。

整个流程很长,但是很奇怪,前台返回一直是200,但返回为null。

一度以为是网闸的锅,找原因也找了很久。

在本地远程服务A看日志,请求没过去,那会也没怀疑服务A会存在问题。

本身服务A比较简单,就是接收前台参数,用OkHttp转发给本地远程服务B,接收本地远程服务B的返回结果处理之后就返回。

调了半下午,一度有点怀疑人生。

突如其来的SAO,差点闪了我的腰

到快下班,突发奇想,会不会是服务A的问题。

把远程连接上,打开日志记录,前端发起请求。

果然,问题就在这水灵灵的出现了,不早不晚。

什么原因呢?

之前服务A,做了一个骚操作:通过请求中地址和端口来转发到本地远程服务B。

比如前端的地址(因为网闸的原因,前端地址不固定)是:172.16.10.9,那此时本地远程服务B的请求地址就是:http://172.16.10.9/xxxx

但172.16.10.9这个地址其实在服务A是不可用的,就导致请求超时。

请求超时之后,没有处理任何请求,就直接返回的null(null来背锅!)。

后续怎么办?

把本地远程服务B的地址改为固定地址。

再试一次,果然可以了。

其实从服务A到本地远程服务B是内网环境,本身就是通的。

在整个流程中,只要网闸打开了对应的前端IP和端口,基本整个服务就是可用的(除了后端取了请求地址和端口会导致的服务不可用)。

好了,又上了一当。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 锤子代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档