Feign傳參與Spring MVC的一些區別

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章