Spring Cloud Feign 構造引數請求

2021-08-17 03:28:46 字數 1292 閱讀 1015

假設我們請求的url包含多個引數,例如http://microservice-provider-user/get?id=1&username=張三 ,要怎麼辦呢?

我們知道spring cloud為feign新增了spring mvc的註解支援,那麼我們不妨按照spring mvc的寫法嘗試一下:

@feignclient("microservice-provider-user")

public

inte***ce

userfeignclient

然而我們測試時會發現該寫法不正確,我們將會收到類似以下的異常:

feign.feignexception: status 405 reading userfeignclient#get0(user); content:

由異常可知,儘管指定了get方法,feign依然會傳送post請求。

正確寫法如下:

(1) 方法一

@feignclient(name = "microservice-provider-user")

public

inte***ce

userfeignclient

這是最為直觀的方式,url有幾個引數,feign介面中的方法就有幾個引數。使用@requestparam註解指定請求的引數是什麼。

(2) 方法二

@feignclient(name = "microservice-provider-user")

public

inte***ce

userfeignclient

多引數的url也可以使用map去構建。當目標url引數非常多的時候,可使用這種方式簡化feign介面的編寫。

下面我們來討論如何使用feign構造包含多個引數的post請求。舉個例子,假設我們的使用者微服務的controller是這樣編寫的:

@restcontroller

public

class

usercontroller

}

我們的feign介面要如何編寫呢?答案非常簡單,示例:

@feignclient(name = "microservice-provider-user")

public

inte***ce

userfeignclient

SpringCloud Feign引數傳遞問題記錄

物件傳遞 requestbody required false 不支援多物件傳遞,至少我目前發現是這樣的,如有錯誤或者改進的方法請提出 api層 feignclient value transaction feign public inte ce transactionapiservice介面層 交...

SpringCloud Feign引數傳遞問題

前言 1.feign不支援get方法傳遞pojo spring mvc 不支援繼承介面中方法引數上的註解 支援繼承類 方法上的註解 所以使用feign呼叫介面時無法直接傳遞pojo 解決方式1 author wx 呼叫訂單服務 feignclient pay order 服務名 public int...

SpringCloud Feign 引數問題

今天遇到使用feign呼叫微服務,傳遞引數時遇到幾個問題 1.無引數 以get方式請求 服務提供者 public string hello 服務消費者 string hello 2.單個引數 1 get pathvariable 服務提供者 public string test pathvariab...