在初次使用springcloud,调用微服务的时候,常常会踩坑,这里总结一下,在调用微服务的时候,常犯的几点错误及注意点:
一、FeignClient接口,不能使用@GettingMapping 之类的组合注解
@FeignClient("target-servername")
public interface FeignClient {
@RequestMapping(value = "/simple/{id}", method =RequestMethod.GET)
public Object findById(@PathVariable("id") Long id);
...
}
这边的@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) 不能写成@GetMapping("/simple/{id}") 。因为GetMapper是一个组合注解。
二、FeignClient接口中,如果使用到@PathVariable ,必须指定其value
@FeignClient("target-servername")
public interface FeignClient {
@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
public Object findById(@PathVariable("id") Long id);
...
}
这边的@PathVariable("id") 中的”id”,不能省略,必须指定。
三、FeignClient多参数的构造
如果想要请求target-servername 服务,并且参数有多个例如:http://target-servername/query-by?id=1&username=张三 要怎么办呢? 不能构造一个复杂的对象去接收,必须一个一个接收参数
@FeignClient("target-servername")
public interface UserFeignClient {
@RequestMapping(value = "/query-by", method = RequestMethod.GET)
public Object queryBy(@RequestParam("id")Long id, @RequestParam("username")String username);
}