1.其中最简单的方法就是直接在请求中加上 注解@@RequestHeader 来进行实现
@FeignClient(contextId = "remoteNameService", value = "test" , fallbackFactory = RemoteNameFallbackFactory.class) public interface RemoteNameService { /*** * 获取名称 * @return */ @GetMapping("/approvalForm/getApprovalForm") public String getApprovalForm(@RequestParam(name = "type",defaultValue = "") Integer type,@RequestHeader(name = "Token",required = true) String Token); }2.就是在@FeignClient 注解中加入配置类 他需要在配置文件yml 文件中加上如下代码
hystrix: command: default: execution: isolation: strategy: SEMAPHORE然后需要配置文件 FeignConfiguration
import com.alibaba.fastjson.JSONObject; import com.dfhm.common.core.utils.StringUtils; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Component; import javax.swing.text.html.parser.Entity; import java.util.HashMap; import java.util.Map; @Configuration @Component public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { String access_token = null; try { // 通过cache缓存获取token 如果没有则重新获取 access_token = (String) Cache.get("access_token"); if(StringUtils.isBlank(access_token)){ access_token = getAccessToken(); Cache.put("access_token",access_token,100000); } }catch (Exception e){ access_token = getAccessToken(); Cache.put("access_token",access_token,100000); } requestTemplate.header(HttpHeaders.AUTHORIZATION, "Bearer "+access_token); } /** * 获取access_token * @return */ public String getAccessToken(){ String access_token = "" // 通过自己项目中的其他方法获取到 admin 进行验证的access_token 返回 return access_token; } }这个配置类我多做了一个 cache缓存,如果可以也可以使用 redis 代替 或者直接不使用每次重新获取看个人需求。
接下来就是使用时的代码 需要在@FeignClient 注解上加上 configuration = FeignConfiguration.class 如果没有及时生效,请记得重启使用该服务的其他服务
@FeignClient(contextId = "remoteNameService", value = "test" , fallbackFactory = RemoteNameFallbackFactory.class,configuration = FeignConfiguration.class) public interface RemoteNameService { /*** * 获取名称 * @return */ @GetMapping("/approvalForm/getApprovalForm") public String getApprovalForm(@RequestParam(name = "type",defaultValue = "") Integer type); }希望对其有帮助。感谢支持!!!
