原文地址:http://www.jylt.cc/#/detail?id=3a733074206a079dffdc3578570165b3
问题出现
在开发的时候,有一个用户请求服务A,服务A通过feign去调用另一个服务的时候报404异常。经过排查日志发现其他用户都能够正常访问,唯独这个用户会出现这个问题。
问题排查
经过在本地还原线上场景后发现,将feign的日志级别调至full
feign:
client:
config:
default:
loggerLevel: full
然后用该用户信息发起请求,发现下面这种问题
// 消费者,参数id为null之后,便会出现404异常
@GetMapping("/user/{id}")
User getById(@PathVariable Integer id);
// 生产者
@GetMapping("/user/{id}")
public User getById(@PathVariable Integer id);
原来,这个时候参数id为空了,请求feign请求的路径正常应该是类似/user/1
,结果现在请求路径成了 /user/
,也就不出意料地找不到生产者了。
总结
这种请求还是需要对参数进行校验的,否则很容易就出事故了。