get請求多引數的url
假設我們請求的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介面的編寫。
post請求包含多個引數
下面我們來討論如何使用feign構造包含多個引數的post請求。舉個例子,假設我們的使用者微服務的controller是這樣編寫的:
@restcontroller
public class usercontroller
}
我們的feign介面要如何編寫呢?答案非常簡單,示例:
@feignclient(name = "microservice-provider-user")
public
inte***ce userfeignclient
如何使用Feign構造多引數的請求
tips 本文基於spring cloud greenwich sr1,理論上支援finchley及更高版本。本節來 如何使用feign構造多引數的請求。筆者以get及post請求為例講解,其他方式 例如delete put等 的請求原理相通,讀者可自行研究。假設需請求的url包含多個引數,例如ht...
Feign 首次請求失敗
當feign和ribbon整合hystrix之後,可能會出現首次呼叫失敗的問題,出現原因分析如下 hystrix預設的超時時間是1秒,如果介面請求響應超過這個時間,將會執行fallback,spring在裝配bean的機制以及懶載入原因,feign的首次請求都會相對較慢,如果請求超過1秒,就會出現請...
FEIGN遠端呼叫丟失請求頭
在學習穀粒 篇幅中,在feign進行遠端呼叫是會丟失cookie等訊息.以及在使用completablefuture進行非同步呼叫時會導致丟失上下文 經過requestinterceptor處理後的請求如下,已經加上了請求頭的cookie資訊 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上...