FeignClient 呼叫服務端時,服務端報錯:Request method ‘POST‘ not supported]
阿新 • • 發佈:2021-01-08
FeignClient 呼叫服務端時,服務端報錯:Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘POST’ not supported]
FeignClient 端
@GetMapping("/purchasingOrder/selectAllPurchasingOrderForJointQuery")
CommonResult<PageInfo<PurchasingOrder> > selectAllPurchasingOrderForJointQuery(
@RequestParam("page") Integer page,
@RequestParam("pageSize") Integer pageSize,
@RequestBody PurchasingOrder purchasingOrder);
被呼叫服務端
@GetMapping("/purchasingOrder/selectAllPurchasingOrderForJointQuery")
public CommonResult< PageInfo<PurchasingOrder>> selectAllPurchasingOrderForJointQuery(
@RequestParam("page") Integer page,
@RequestParam("pageSize") Integer pageSize,
@RequestBody PurchasingOrder purchasingOrder){
return purchasingOrderService.selectAllPurchasingOrderForJointQuery (page, pageSize, purchasingOrder);
}
報錯:
Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
說不支援Post請求,但是我FeignClient 端用的是Get請求,服務端用的也是Get請求,為什麼會報錯不支援Post請求呢?
而我把客戶端和服務端都改成Post請求後,就解決問題了。
原因:
因為我FeignClient 端的請求引數是@RequestBody PurchasingOrder purchasingOrder,當把物件轉換為json字串的時候 FeignClient會預設傳送Post請求
解決方法
1、如果使用@RequestBody 註解,把客戶端與服務端都改為Post請求
2、如果非要用Get傳送物件型別引數,可以使用@SpringQueryMap註解,前提是的springboot 2.2版本以上,它的作用是直接以物件的形式傳參,服務端可直接用以下方式接收引數:
@GetMapping("/purchasingOrder/selectAllPurchasingOrderForJointQuery")
public CommonResult<PageInfo<PurchasingOrder>> selectAllPurchasingOrderForJointQuery(
@RequestParam("page") Integer page,
@RequestParam("pageSize") Integer pageSize,
PurchasingOrder purchasingOrder){
return purchasingOrderService.selectAllPurchasingOrderForJointQuery(page, pageSize, purchasingOrder);
}