美文网首页
Feign动态设置header

Feign动态设置header

作者: wyn_做自己 | 来源:发表于2022-04-17 22:29 被阅读0次

今日份鸡汤:生活从不亏待每一个努力向上的人,未来的幸运都是过往努力的积攒,趁阳光正好去追逐梦想~

需求背景:

我们知道springMVC中我们可以通过拦截器和过滤器拦截请求头,来获取一些信息处理我们的业务员逻辑,比如权限验证等。

但是在springcloud中微服务的调用Feign其实最终也是远程调用了http,那么能不能在客户端调用的时候发给服务端的header中添加自定义的信息呢?从而满足一些业务逻辑处理,不用到处实现重复的业务逻辑。直奔主题,来看一下Feign如何动态设置header。

拦截器统一处理:

我们可以直接在接口的interface的公共包中加入如下配置,这样同样的调用都会经过这个拦截器处理,进而实现统一的header处理。

public class HeaderInterceptor implements RequestInterceptor {

@Override
public void apply(RequestTemplate requestTemplate) {
    //以下条件里面根据自己的业务逻辑去写
    if(true){
        requestTemplate.header("businessId", businessId);
    }
}

}

接口类这里直接配置为configuration,这样每次调用时它都执行一次

HeaderInterceptor 拦截器
@FeignClient(
url = "${feign.contract-op.url:https://localhost:8081/contract-op-service}/billInfo",
name = "contractOpClient",
contextId = "billInfoClient",configuration = ContractFeignConfiguration.class
)
public interface BillInfoClient {

@ApiOperation(value = "分页")
@GetMapping
PageInfo<BillInfoListResponse> page(@SpringQueryMap @Validated BillInfoListRequest searchRequest);

}

如果我们不在这个configuration 配置,而是HeaderInterceptor 加上@Configuration注解或者@Component注解(二者区别:@Component和@Configuration的作用和区别),那么它会对所有全局的feignclien都会加上这个参数处理。

相关文章

网友评论

      本文标题:Feign动态设置header

      本文链接:https://www.haomeiwen.com/subject/mowlertx.html