- OpenFeign 介绍
OpenFeign 是一种声明式、模板化的HTTP客户端。在 SpringCloud 中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样。 - 报错信息
feign.FeignException$NotFound: [404] during [GET] to [http://mms-core/test/get?name=%E9%80%9A%E8%BF%87web%E8%B0%83%E7%94%A8%E7%9A%84] [AssetInfoApi#get(String)]: [<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} ... (431 bytes)]
at feign.FeignException.clientErrorStatus(FeignException.java:219) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:194) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:185) ~[feign-core-11.8.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:92) ~[feign-core-11.8.jar:na]
at feign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:96) ~[feign-core-11.8.jar:na]
- 报错原因
因为服务配置了上下文路径 server.servlet.context-path: /mms-core,所以@FeignClient 需要 path = “mms-core” 如果不加就会报404找不到接口。 - @FeignClient 常见属性
5. name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
6. url: url一般用于调试,可以手动指定@FeignClient调用的地址
7. decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
8. configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
9. fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
10. fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
11. path: 定义当前FeignClient的统一前缀,当我们项目中配置了server.context-path,server.servlet-path时使用
- 参考文档
@FeignClient使用详解 https://blog.csdn.net/xhwangSGTL/article/details/111991017