iPaaS文档库 iPaaS文档库
00 概述
01 产品安装指南
02 快速入门指南
03 Studio使用指南
04 iPaaS使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 产品集成指南
09 FAQ
10 iPaaS上线指南
运维指南
  • 接口调用“Not Found”相关问题排查解决
  • 1.发布到APIGateway的接口调用报错:404 ROUTENOTFOUND
  • 现象描述
  • 原因分析与解决方案
  • 2.接口调用报错:The request[/xx/xx] not found
  • 现象描述
  • 原因分析与解决方案
  • 3.接口调用报错:Status: 404 NOT_FOUND,"error": "Not Found"
  • 现象描述
  • 原因分析与解决方案
  • 4.从外网调用代理接口,配置了nginx代理的对外地址,接口调用报错404
  • 现象描述
  • 原因分析与解决方案
  • 5. 通过nginx负载,调用接口报错502
  • 现象描述
  • 原因分析与解决方案
  • 6. 接口调用报错401,提示未授权
  • 现象描述
  • 原因分析与解决方案

# 接口调用“Not Found”相关问题排查解决

# 1.发布到APIGateway的接口调用报错:404 ROUTE_NOT_FOUND

# 现象描述

  • 发布到APIGateway的接口,调用网关的地址报错“404 ROUTE_NOT_FOUND"

# 原因分析与解决方案

原因分析:

  1. Redis未配置密码或未开启AKE事件通知。网关路由依赖Redis缓存服务器管理信息,Redis配置不当导致路由无法加载;
  2. 注册时选择已有前缀,但是业务地址不是之前的,业务地址是其他的,导致调用时根据前缀找不到具体的业务地址,报错:Status: 500 INTERNAL_SERVER_ERROR,"Failed to handle request[post http://x.x.x.x/test/qianzhui/xx/xx] 404 NOT_FOUND
  3. redis没有密码,但是gateway和portal配置文件application.properties中配置了密码,服务器管理的路由没有加载到;
  4. https协议接口同时发server和gateway,gateway未配置SSL信任,导致SSL握手失败;
  5. gateway开启了网关默认端口https,发布的接口是https,ssl证书不正确或者证书密码不正确,如图:

解决方案:

  1. 开启Redis事件通知:设置notify-keyspace-events为AKE,重启Redis,重启gateway,重新发布接口或者同步服务器;
  2. 修改前缀为新的,不要同一个前缀对应多个不同的业务地址;
  3. 如果没有密码,gateway和portal配置文件application.properties中将redis密码置空,如果有,确保Redis配置了正确的密码;
  4. 打开gateway配置文件中application.properties的spring.cloud.gateway.httpclient.ssl.useInsecureTrustManager=true;
  5. 正确配置,并上传上传证书到{APIGateway安装目录}/keystore下,如下图所示:

# 2.接口调用报错:The request[/xx/xx] not found

# 现象描述

  • 接口发布在ESBServer,接口调用时报java.lang.RuntimeException: The request[/api/test/notfound] not found

# 原因分析与解决方案

原因分析:

  1. IP地址配置不一致。startup.conf中的IP地址与Portal服务器管理中配置的IP地址不一致;
  2. 模型未生成。接口发布后,模型文件未正确生成到服务器磁盘,导致server无法找到接口模型;
  3. 代理端口被占用。server启动时,代理端口(如9090、10001)被其他程序占用,导致实际端口未启动,接口无法访问;
  4. 接口调用时使用的URI不正确,调用时使用的URI与注册时配置的代理URI不一致;

解决方案:

  1. 确保startup.conf中的IP地址与Portal服务器管理中的IP完全一致。如果是容器环境无固定IP,需配置为容器服务地址(如0.0.0.0或具体服务名);
  2. 重新发布接口,看发布时候有无报错,确保模型文件生成到EOS/_srv/work目录;
    • 检查模型目录(EOS/_srv/work)的所属用户和权限,确保启动用户对该目录有读写权限;
    • 如权限不足,修改目录所属用户或赋予适当权限:
    chown -R 启动用户:启动用户组 EOS/_srv/work
    chmod -R 755 EOS/_srv/work
    
  3. 重启server验证端口是否正常启动,使用命令检查端口占用情况;
    netstat -anp | grep 端口号
    
    如被占用,可结束占用进程或在管理门户-端口管理-编辑修改ESB代理端口;
  4. 确认调用时候传的URL和注册时候的一致,uri末尾不要多加或者少/.

# 3.接口调用报错:Status: 404 NOT_FOUND,"error": "Not Found"

# 现象描述

  • 接口发布在ESBServer,调用报错:Status: 404 NOT_FOUND,"error": "Not Found"

# 原因分析与解决方案

原因分析: 代理URL格式错误或者地址配置错误。接口注册时配置的业务地址与原业务地址不一致:

  • 如配置时多加或者少加了一层uri;
  • 遗漏末尾斜杠(/)或多加末尾斜杠(/),导致请求路径与原业务路径不匹配,调用时找不到对应接口。

解决方案:

  1. 检查配置的业务uri与源uri是否完全一致,没有多出或者漏掉配置。
  2. 检查代理地址是否缺少或者多了末尾斜杠(/),补充完整。

# 4.从外网调用代理接口,配置了nginx代理的对外地址,接口调用报错404

# 现象描述

  • 集群环境,外网调用需要走nginx负载后的地址,在服务器组管理中配置了对外地址和端口,调用接口依旧报错404.

# 原因分析与解决方案

原因分析: 端口配置分离不当。服务器组同时配置了地址和端口,但iPaaS要求地址和端口分开配置,导致路由解析错误。

解决方案: 规范端口配置。

  1. 服务器组地址配置为http://IP地址(不带端口)。
  2. 对外端口在管理门户-端口管理-对外端口中配置,确保负载均衡器转发时保留端口信息。

# 5. 通过nginx负载,调用接口报错502

# 现象描述

  • 调用接口一直报502

# 原因分析与解决方案

原因分析: nginx配置错误。nginx转发配置不正确,或nginx与server之间网络不通,导致502错误。

解决方案: 排查nginx问题。

  1. 查看nginx错误日志(通常位于/var/log/nginx/error.log)。
  2. 确认nginx与server之间网络连通性:telnet server_ip server_port。
  3. 检查nginx配置文件,确保upstream和后端地址正确。
  4. 修正配置后重启nginx。

# 6. 接口调用报错401,提示未授权

# 现象描述

  • 接口调用报错:响应返回码是401,报文提示未授权

# 原因分析与解决方案

原因分析: 业务服务需要basic认证,调用时返回401,提示未授权。调用请求中未在请求头中传递Basic认证信息,服务端无法验证身份。

解决方案:

  1. 在请求头中添加Authorization参数,值为Basic base64(用户名:密码):
  2. 可在“请求报文转换”中配置固定头,避免每次调用手动添加,如图:

← iPaaS代理调用报错:PKIX path building failed问题 WebService代理接口调用报错“can’t find match inbound问题 →