分享

Feign GET方式传递多个参数

 wwq图书世界 2021-09-14

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多