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)

相关推荐