springcloud之Feign初识篇—yml实现服务认证
1、配置拦截器:feign会在实际请求前先走这个拦截器,这样可以把需要认证的信息在执行拦截器的时候加载进request请求中。
import feign.RequestInterceptor; import feign.RequestTemplate; public class MyBaseAuthRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { //配置的是账号、密码编译后得到的字符 requestTemplate.header("Authorization","Basic cm9vdDpyb290"); } }
为什么添加这个?feign的配置类里有对应的信息,我们这是自定义的形式重写了
2、检查feign注解修饰的调用接口
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import java.util.Map; /** * configuration :此时可以写默认的配置,也可不写 */ @FeignClient(name = "test1",configuration = FeignClientsConfiguration.class) public interface FeignTest1Service { @RequestMapping(value = "/ribbonTest",method = RequestMethod.POST) public String testFeign(@RequestBody Map<String,String> map); }
feign方法上可以使用@RequestMapping、@ResponseBody进行修饰
feign方法参数可以使用@RequestBody、@RequestParam等修饰
3、配置yml
feign: client: config: #指定服务配置 test1: connect-timeout: 3000 read-timeout: 1500 logger-level: BASIC request-interceptors: - com.example.springcloud.ribbonfeign.interceptor.MyBaseAuthRequestInterceptor
启动项目后运行正常。