feign get請求使用物件接收引數報錯

2021-09-01 05:28:54 字數 2265 閱讀 8211

我們知道springboot get請求時,引數多的時候我們可以使用請求物件來接收,像下面這樣:

@apioperation(value = "根據不同引數獲取不同表資料", response = picaresponse.class, notes = "demo")

public picaresponsegetmegrezdata(megrezrequest request, httpservletrequest httpservletrequest)

但是feign呼叫服務的時候是不支援請求物件來接收引數的,當用請求物件接收引數時,呼叫會報如下錯誤:

除錯時發現httpurlconnection中的一段**,jdk原生的http請求工具類,feign預設使用的連線工具實現類

private synchronized outputstream getoutputstream0() throws ioexception  else
呼叫時必須要把引數分開來接收,像下面這樣:

@feignclient(value="pica-cloud-demo")

public inte***ce megrezserviceclient

但是這種方式對於呼叫方來說顯然是不友好的,那我們如何來使用請求物件來接收引數呢,按照下面這樣操作即可,將feign預設呼叫的httpclient替換為apache的httpclient:

1.首先在client服務pom檔案新增如下依賴:

2.在client對應介面接收物件前面加上@requestbody註解

picaresponsegetmegrezdata(@requestbody megrezlistrequest megrezlistrequest);

同時在controller相應的介面也要加上@requestbody註解;

@apioperation(value = "根據不同引數獲取不同表的排名資料", response = picaresponse.class, notes = "demo")

enabled: true但是我沒加依然可以正常呼叫了。

服務呼叫服務是沒問題了,可是這樣有乙個問題,我們用postman等類似工具呼叫的時候是調不通的,因為get請求是不能傳請求體引數的,那麼怎麼樣可以傳form引數同樣可以接收到呢,我加了一步處理,如果是form表單引數的話,將引數封裝到請求體引數中,多加的**如下:

@apioperation(value = "根據不同引數獲取不同表的排名資料", response = picaresponse.class, notes = "demo")

public picaresponsegetmegrezdata(@requestbody(required = false) megrezlistrequest megrezlistrequest, httpservletrequest request)

轉化方法如下:

}這樣處理完之後,我們既可以把引數分開接收,同時可以使用請求物件接收了。

feign get方法使用物件引數

feign中和controller中不一樣的地方 controller中可以get方法使用物件引數無需任何註解,可預設繫結到物件 apioperation 分頁列表 paged fun getpaged query userquery responseentity 而在feign的client中必須...

接続先 使用 Web 接続

ip 僅僅驗證ip位址的方法 string host 192.168.1.181 int timeout 3000 超?在3?以上 boolean status inetaddress.getbyname host isreachable timeout 驗證某個伺服器的方法 應用多 接続先 使用 ...

2 4 請求物件

2.4.1.介紹 請求物件是在前端控制器,路由器,分發器,以及控制類間傳遞的簡單值物件。請求物件封裝了請求的模組,控制器,動作以及可選的引數,還包括其他的請求環境,如http,cli,php gtk。模組名可通過getmodulename 和setmodulename 訪問。控制器名可通過getco...