有学有练才叫学习:学而不思则罔,思而不学则殆:学而不习,纸上谈兵,习而不进,画地为牢!

get传参方式(GET方式传递多个参数)

开发者资讯 炮渣日记 3周前 (11-16) 22次浏览 已收录 0个评论 扫描二维码

单个参数

错误示例

@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)
炮渣日记
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址