使用feign客戶端傳參接收不到的問題及解決
feign客戶端傳參接收不到
使用feign客戶端做不用服務之間的調(diào)用的時候出現(xiàn)了provider獲取不到參數(shù)的問題,在此記錄一下。
先來說一下流程
在我的微服務中,有這么幾個角色,consumer: 服務的消費者,provider:服務的消費者,還有一個feign,主要就是provider的接口形式,然后consumer依賴了feign,去調(diào)用provider中的服務,我在provider中打印獲取的參數(shù),一直為空。
我這里,consumer, feign,provider都是單獨的模塊
我們來看下代碼
首先是provider:提供了一個保存用戶的服務
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
?
? ? @PostMapping("/save")
? ? public String save(User user){
? ? ? ? log.info("provider: 處理save請求,參數(shù)為:{}",user);
? ? ? ? return "success";
? ? }feign代碼:注意這個模塊要添加feign依賴
@FeignClient(name = "service-provider",fallback = UserHystrix.class)
public interface UserController {
?
? ? @PostMapping("/user/save")
? ? String save(User user);?
}
然后使用consumer通過feign調(diào)用provider:注意 consumer依賴feign,上代碼:
@RestController
@Slf4j
public class FeignController {
?
? ? @Autowired
? ? private UserController userController;
?
? ? @RequestMapping("/feign")
? ? public String test(){
? ? ? ? User user = new User();
? ? ? ? user.setName("zhangsan");
? ? ? ? user.setAge(10);
? ? ? ? log.info("feign調(diào)用開始。。。。");
? ? ? ? String result = userController.save(user);
? ? ? ? log.info("feign: 返回: {}", result);
? ? ? ? return "success";
? ? }???
}各自服務啟動后,瀏覽器調(diào)用consumer的 /feign請求,觀察provider日志,發(fā)現(xiàn)獲取到的User參數(shù)沒有值。
如何解決
在provider中的方法里的User參數(shù)前面,加上 @RequestBody ,注意下面代碼中的注釋部分
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
?
? ? @PostMapping("/save")
? ? // 注意加上requestBody,否則容易接收不到參數(shù)
? ? public String save(@RequestBody User user){
? ? ? ? log.info("provider: 處理save請求,參數(shù)為:{}",user);
? ? ? ? return "success";
? ? }?
}好了,為了方便大家觀看,在給出以下項目結構吧:

feign傳遞參數(shù)!坑!
以下是FeignClient 注解的接口 中的一個抽象方法
@PostMapping("/bizTask/selectNonCompleteByShopIds")
List<BizTask> selectNonCompleteByShopIds(@RequestBody List<Long> shopIds);?注意這里接口參數(shù) shopIds,該方法的參數(shù)列表也必須和抽象方法一致,否則接不到參數(shù)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java使用IntelliJ IDEA連接MySQL的詳細教程
這篇文章主要給大家介紹了關于Java使用IntelliJ IDEA連接MySQL的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
淺談spring使用策略模式實現(xiàn)多種場景登錄方式
本文主要介紹了spring使用策略模式實現(xiàn)多種場景登錄方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

