首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Feign的拦截器RequestInterceptor

Feign的拦截器RequestInterceptor

作者头像
yingzi_code
发布2020-03-18 20:05:02
29.7K3
发布2020-03-18 20:05:02
举报

Feign的拦截器RequestInterceptor

SpringCloud的微服务使用Feign进行服务间调用的时候可以使用RequestInterceptor统一拦截请求来完成设置header等相关请求,但RequestInterceptor和ClientHttpRequestInterceptor有点不同,它拿不到原本的请求,所以要通过其他方法来获取原本的请求

首先创建自定义的RequestInterceptor

这里通过RequestContextHolder获取到当前的request

@Slf4j
@Component
public class MyFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {

        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

        log.info("===request: {}", template.url());
        template.header("aaaa", "bbbb");
    }
}

然后定义一个feign的接口类

@FeignClient(name = "SPRING-CLOUD-CLIENT-DEMO")
public interface ClientFeign {

    @GetMapping("/demo/get")
    String weight(@RequestParam String param);
}

再创建一个controller

@Slf4j
@RestController
@RequestMapping("/interceptor")
public class InterceptorController {

    @Autowired
    private ClientFeign clientFeign;


    @GetMapping("/feign")
    public String feign(@RequestParam String param) {

        return clientFeign.weight(param);
    }

}

运行程序测试一下接口

在这里插入图片描述
在这里插入图片描述

查看程序打印

可以看到进入了我们自定义的RequestInterceptor

INFO 25936 --- [ctor-http-nio-3] c.m.d.g.interceptor.MyFeignInterceptor   : ===request: /demo/weight?param=a

再查看feign调用的程序日志,可以看到设置的header信息

  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : aaaa: a
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : websession: ECF4D97D02EEAFDDA3C15A7F1F050F61
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : header: aaaa, bbbb
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : header: accept, */*
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : header: user-agent, Java/1.8.0_191
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : header: host, 39.108.15.147:8801
  INFO 1 --- [nio-8801-exec-6] c.m.d.client.controller.DemoController   : header: connection, keep-alive
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档