状态码排查
返回401
一般生产环境出现这个问题,是由于没有通过接口的登录认证。
出现这种情况,一般用户在尝试访问受保护的资源前,需要通过某种形式的身份验证(如登录),但如果未能正确提供必要的认证信息,如Token、用户名和密码等。 就会出现返回码是401的情况。
返回403
如果生产环境请求某个接口,返回码是403,则说明目前没有访问资源的权限。
这种场景跟返回码是401有区别。
401着重于认证问题,即用户没有提供正确的身份验证信息。
而403则是在认证成功的基础上,用户没有足够的权限去访问请求的资源。
要解决这个问题,我们需要给接口的调用方,分配相应的访问权限。
返回404
不用怀疑,你请求的接口地址,现在已经不存在了,才会报404。
比如有些接口名称改了,或者接口路径中/v1/user/query改成了/v2/user/query,版本号升级了。
如果没有通知所有的接口调用方,都可能会出现请求接口返回码为404的情况。
还有一种可能也会导致请求接口报404的问题,接口地址之前注册到了API网关中,但API网关的配置出现了问题。
优先排查接口url是否修改,然后排查网关或者Nginx配置是否有问题。
返回405
如果请求的接口,返回码为405,一般是请求方式错误导致的。
最常见的是:接口只支持post方式,但发送的却是get请求。
或者接口只支持get方式,但发送的却是post请求。
这种问题一般非常好排查和解决。
返回500
如果请求的接口,返回码为500,一般是出现了服务的内部错误。
一般网关层会对接口的返回值做一次封装,不会返回真正的异常信息。
我们只能查看接口的错误日志,来定位和排查问题。
建议出现异常时,把接口请求参数打印出来,方便后面复现问题。
导致这种问题的原因有很多,我们只能根据服务器上的错误日志,和相关的业务代码逐一排查。
返回502
如果请求的接口,返回码为502,一般是出现了服务不可用的情况。
有两种情况:
服务器正在重启中。
服务挂掉了。
这时候可以查看一下服务的监控,也可以登录到服务器上查看的运行状态。
大部分情况下,重启一下服务,可以快速解决问题。
然后再根据服务器上的日志,可以定位具体的原因,比如:OOM问题导致的。
返回504
如果请求的接口,返回码为504,一般由于网关或者接口超时导致的。
接口返回数据的耗时,大于网关设置的超时时间,就会出现这个问题。
出现这种情况,一般需要优化接口相关的代码。