快捷搜索: 王者荣耀 脱发

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

启动项目后运行正常。

经验分享 程序员 微信小程序 职场和发展