Feign中@RequestBody 与 @RequestParam 的区别
@RequestBody
用于POST请求
@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
String test(@RequestBody Map queryMap);
从请求体解析成: {"idList": [1, 2], "category": "electronics"}。
Feign 会将 queryMap 序列化为 JSON 并放入请求体。适用于需要通过请求体(request body)传递复杂数据的场景,例如 JSON,Map,List,Java对象,
@RequestParam
用于GET 请求
@RequestMapping(value = "/test2", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE)
String test2(@RequestParam("queryMap") Map queryMap);
从 URL 查询参数解析成: ?idList=1&idList=2&category=electronics。
注意:
如果你尝试在 GET 方法上使用 @RequestBody,Feign 或 Spring 会报错。因为GET 不支持请求体。