美文网首页
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