Feign GET方式传递多个参数
Feign GET方式传递参数
单个参数
错误示例
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test(String name);
}
上面的示例如果参数为空,不会有问题,当存在参数时,会报错。
因为OpenFeign在构造请求时需要@RequestMapping/@RequestParam/@PathVariable/@RequestHeader等来构造http请求。
而GET请求如果参数没有注解,会转POST方式。
正确写法
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@GetMapping(value = "/test)
public String test(@RequestParam("name") String name);
}
多个参数
错误示例
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@GetMapping("/test")
public User test(User user);
}
正确写法
方法一
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@GetMapping("/test")
public User test(@SpringQueryMap User user);
}
方法二
把参数平铺出来,每个参数加上@RequestParam注解。
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@GetMapping(value = "/test")
public User test(@RequestParam("id") Long id, @RequestParam("name") String name);
}
方法三
使用Map的方式
@FeignClient(name = "demoFeignClient")
public interface DemoFeignClient {
@GetMapping(value = "/test")
public User test(@RequestParam Map<String, Object> map);
}
赞 (0)