单个参数
错误示例:下面示例中如果参数为空,不会报错,如果存在参数,会报错,因为OpenFeign在构造请求时需要
@RequestMapping/@RequestParam/@PathVariable/@RequestHeader等来构造http请求,而GET请求如果参数没有注解,会转为POST方式java@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(String name); }正确写法
java@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(@RequestParam("name") String name); }
多个参数
错误示例
java@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(User user); }正确写法一:使用
@SpringQueryMapjava@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(@SpringQueryMap User user); }正确写法二:将参数平铺,每个参数加上
@RequestParam注解java@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(@RequestParam("name") String name, @RequestParam("age") Integer age); }正确写法三:使用
Map + @RequestParamjava@FeignClient(name = "userFeignClient") public interface UserFeignClient { @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public String getInfo(@RequestParam Map<String, Object> paramsMap); }