API异常排查
问题排查流程
1)排查说明
如果API调用出现用户调用异常或者系统异常,则API网关会终止请求后端服务,并在响应API的请求时将错误原因写到header的x-ag-message字段中,因此x-ag-message字段是一个判断请求是否已经到达了后端服务的标志。
SDK应用故障排查与普通API的故障排查一样,都是通过HTTP请求的响应报文头的x-ag-message字段结合HTTP响应状态码来分析故障原因的。要从SDK应用的API请求中获得响应状态码,可以通过BaseApiResponse.getStatusCode()函数获取;要从SDK应用的API请求中获取响应报文头,可以通过BaseApiResponse.getHeaders()函数获取;如果API请求尚未产生响应报文,一般是请求尚未发出,请检查应用请求是否确实提交。
除了上述办法,您还可以通过在线调试的方法来定位问题所在,以批量查询产品信息为例,如图所示,在找到对应API后,点击“调试”进入在线调试界面。
进入在线调试界面后,您可以输入相关参数并点击提交请求按钮,右侧即为请求信息以及响应信息,可以帮助您定位相关问题。
2)错误码
API网关错误码沿用HTTP状态码方案,并在返回信息的x-ag-message中返回具体异常信息。API网关使用的错误码主要包括以下几种:
错误码 | 错误类型描述 | 错误类型说明 |
400 | Bad request | 主要为用户输入数据不完整或者格式不正确错误 |
401 | Unauthorized | 权限(签名、API权限)校验不通过 |
403 | Forbidden | 请求禁止(重复请求、过时的请求) |
404 | Not found | 请求的资源(如API版本等)不存在 |
430 | Forbidden | 请求禁止(流量超标、请求熔断) |
500 | Internal Error | 未预料到的程序异常,联系API网关开发者解决 |
503 | Service Unavailable | 系统不可用,联系API网关运营管理人员解决 |
504 | Async Service | 后端服务访问超时,可以尝试重试 |
其余错误情况,若返回header中不存在x-ag-message字段,则为后端服务返回的错误信息,用户需要根据提示选择相应的处理方法。