在微服务项目中多多少少都会遇到服务间的调用,例如服务A中需要使用服务B中的某个功能接口,如果是在前端,可以直接发起一个请求就可以调用这个功能接口返回结果,但后端都会选择创建一个服务调用接口类来请求其它服务的请求地址。
一、创建服务调用的接口以及相应的回调类
在接口类的命名上,为了规范接口类一般都会取名为XXXFeign。至于具体的内容,可以直接复制被调用服务中的接口方法,去掉方法体就好。
注意: 注解@FeignClient中,
value值,指的是被访问的服务在eureka中心注册的名称,用来指定访问的服务;
fallback值,指的是该接口的回调类,该类一般都是实现了该接口的类,其中对每个请求方法都设定的回调方法;
path值,指的是每个请求在访问前都会加上这个前缀,例如path的值为/oms,@RequestMapping中value值为/getDict,则最终的请求地址就为/oms/getDict
避坑:如果接收参数使用了@RequestParam,则最好加上它的value值,否则将项目打包后运行会报错。
二、创建回调类
名称一般XXXFeignFallBack,创建的回调类,直接继承并实现相应的接口类,在方法中写回调的操作。
三、创建拦截器
由于大部分的微服务项目都会设置权限限制,验证请求的token或cookie,就算是后端的服务调用也是一样。如果直接访问会报401错误,显示权限不足,这时就需要设置拦截器来设置token和cookie。
拦截器和请求接口类写好后还需要在启动类扫描一下,否则不生效。