feign構造多引數請求

2021-08-27 16:19:46 字數 1248 閱讀 4670

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資訊 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上...