OpenFeign 爲什麼要和 Spring MVC 傳參比較
當我們開發 spring cloud
項目時,大部分使用openFeign作爲網絡請求客戶端。而openFeign使用的註解都是使用的 spring MVC
的註解,這極大的降低了學習成本,但是 OpenFeign
又和 spring MVC
的請求又有諸多不同。在降低了學習成本的同時,帶來了一些困擾。當我們理所應當的使用 spring MVC
傳遞參數時,OpenFein
卻不一定理睬我們。這篇文章的主要目標就是理清楚 OpenFeign
傳參時區別於 spring MVC
的地方,讓我們能更好的使用 OpenFeign
Feign傳參與Spring MVC的一些區別
1 時間參數
當參數爲時間,不能使用 @RequestParam("paymentDate") Date paymentDate
傳遞
@PostMapping(value = "/updateGroupPurchaseInfo")
void updateGroupPurchaseInfo(@RequestParam("orderId") Long orderId, @RequestParam("paymentDate") Date paymentDate);
正確的是將時間包裹在對象中
@PostMapping(value = "/updateGroupPurchaseInfo")
void updateGroupPurchaseInfo(@RequestBody UpdateGroupPurchaseInfoReqDTO updateGroupPurchaseInfoReqDTO);
2 集合List Set
集合 List
, Set
等作爲方法參數時,必須指定實例類型(例如:ArrayList
),不能用接口類型(例如: List
),用數組也可以
Map
不能傳遞複雜的 Map
類型,比如map裏包含 Map
(例如:Map<key, Map>
)
@RequestBody 註解
參數爲 @RequestBody
時,實現必須加 @RequestBody
,否則參數爲 null
@RequestParam 註解
參數爲 @RequestParam
時,必須指定參數名稱,即使 @RequestParam("orderId")
與對象的名稱一致。
當註解爲@RequestParam("orderId") Long oid
, 註解名稱與參數名稱不一致時,實現方法也必須添加 @RequestParam("orderId")
@PathVariable 註解
參數爲 @PathVariable
時,必須指定參數名稱 接口和接口的實現方法必須都加註解。 例如:@PathVariable("zoneId") Integer zoneId