(黑馬十次方項目day07)再次遇到FeignException$NotFound: status 404 reading xxx 問題


本次錯誤純粹是路徑拼寫的一個小錯誤,結果搞了一上午,最后解決問題氣到吐血。

 

其中找了很多資料,匯總一下其他問題的解決方法:

1、首先是之前一次的問題,url默認找的是服務端,在@FeignClient上加入url指向本地啟動的服務提供方

2、調用feign超時,可以在配置文件加上

feign:
  httpclient:
    connection-timeout: 30000

3、因為feign提供者在配置文件中增加了  context-path: /xxxx  ,把它刪掉

4、參數問題

5、路徑問題,容易忽略的是被調用的服務中寫了全局 @RequestMapping,調用的時候路徑忘寫了。

 

另外引用一下,Feign注意事項:https://my.oschina.net/u/3245438/blog/3073514

1. @EnableFeignClients 默認掃描 xxxxApplication啟動入口 所在包路徑下的 @FeignClient bean,若無法掃描到, 可以在使用Feign調用外部模塊的api時候,需要在引用服務中 xxxxApplication 中的 
  `@EnableFeignClients(basePackages = "cn.tendyron.customer")` 添加外部包需要掃描FeignClient的路徑,否則無法注入bean 2. @FeignClient 聲明的類,使用 spring.application.name 作為 name配置 @FeignClient(name="xxxx"),如果想保留 context-path , 則需要配置 path 屬性 ,
  如:@FeignClient(name="xxxx" , path="xxxx(context-path)") 3. @FeignClient 接口對應的實現類,需要使用 @RestController注解 聲明 4. mapper注解不支持 : @GetMapping,@PostMapping , 參數要加 @RequestParam(“xxx”) 5. FeignClient 調用,實質是httpClient調用 ,若我們暴露的接口api,聲明了對應的 http mapper 信息,在調用方調用時候,通過代理 發起了 http請求,到服務提供方對應的http服務上去,所以在服務提供方的接口,
  可以使用 @RestController來聲明接口的 實現,否則調用方無法找到 http 對應的路徑,會報404 ; 或者 根據 api 聲明的http 信息,構建一個 Controller ,再來調用接口的實現類,但是這樣不太方便;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM