一、在客户端调用需要先导入feign接口依赖
1、我使用的是openfeign,这个依赖大家自行下载,
二、在客户端写一个service接口,用来调用远程feign接口
1、在service的接口上面需要使用@FeignClient注解修饰,
这个注解里面有几个参数需要注I意,URL:就是远程端需要调用接口的服务URL路径,name:就是注册到同一个注册中心的服务名,value和name一样,fallback和fallbackFactory参数一样,都有回滚的意思,就是远程如果报错或者出现问题,就会执行回滚操作。我们一般推荐使用fallbackfactory因为它可以抛异常,也可以打印堆栈信息,方便排查问题。
2、在客户端接口,需要使用请求方式注解修饰,有@RequestMapping ,必须有一个参数value,value:是远程端接口路径,一个需要注意的地方,请求方式必须保持一致,@GetMapping,@PostMapping两种请求方式。
三、客户端启动类,必须加上相关注解注入到spring容器
1、在客户端启动类,需要使用@EnableFeignClients,@EnableDiscoveryClient两个注解必须使用,如果客户端的service使用的服务名,则启动类可以不需要指定service接口路径位置
四、使用feign调用远程可能出现的问题
1、在调用远程端feign接口时,可能会出现服务找不到的问题,这种问题一般是服务没有启动,或者服务名书写错误,
2、调用接口时,也可能会出现,参数接受不到问题,简单参数可以使用@RequestParam或者@PathVariable 。在使用RequestParam时,需要指定value的值,要不然获取不到参数,在使用PathVariable时,就是在service请求方式路径里面指定字段,用一个占位符指定,
3、如果传递的有多个参数,我们可以封装为josnObject,或者封装为map集合传递,因为feign在远程调用时,只能有一个@Requestbody注解修饰远程端,在客户端service时,直接传递对象就行,不需要注解,但是远程端,接受时,一定要用@Requestbody注解修饰,要不然获取不到对象信息。
4、客户端是其他简单类型的话,在远程端,可以使用注解修饰,也可以不使用修饰,都可以获取到数据。