当前位置: 代码迷 >> 综合 >> feign.FeignException: status 404 reading XXXClient#XXMethod(String)
  详细解决方案

feign.FeignException: status 404 reading XXXClient#XXMethod(String)

热度:96   发布时间:2023-10-15 07:00:23.0

在一次feign调用中,有一个需求,根据订单编号查询订单,接口如下:

@FeignClient(name = "order", path = "/")
public interface OrderFeignService {@GetMapping(value = "/order/{orderNumber}")BizOrderModel checkBizOrderExist(@PathVariable("orderNumber") String orderNumber);
}

实现如下:

@RestController
@RequestMapping("/")
public class OrderController implements OrderFeignService {	@Override@GetMapping(value = "/order/{orderNumber}")public BizOrderModel checkBizOrderExist(@PathVariable("orderNumber") String orderNumber) {return orderService.findByOrderNumber(orderNumber);}
}

调用如下:

@Service
@Slf4j
public class OrderService {@AutowiredOrderFeignService orderFeignService;public void test(){if (null == orderFeignService.checkBizOrderExist(dto.getOrderNumber())) {LOG.ERROR("订单信息不存在");}
}

异常信息如下:

feign.FeignException: status 404 reading XXXXClient#XXXXMethod(Long)

    at feign.FeignException.errorStatus(FeignException.java:62)
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:91)
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138)
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
    at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
    at com.sun.proxy.$Proxy97.querySpuDetailBySpuId(Unknown Source)
    at XXXX(IndexService.java:41)
    at XXXX(ElasticsearchTest.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at 

...

异常排查:

feign.FeignException: status 404 reading XXXClient#XXMethod(String)

即当get请求的入参为null时,如本例中的orderNumber没有传参,feign调用时会报404! 

 

 

  相关解决方案