当前位置: 首页 > news >正文

feign请求添加拦截器

@FeignClient 的 configuration 属性:

Feign 注解 @FeignClient 的 configuration 属性,可以对 feign 的请求进行配置。

包括配置Feign的Encoder、Decoder、 Interceptor 等。

feign 请求添加拦截器,也可以通过这个 configuration 属性 来指定。

feign 请求拦截器 RequestInterceptor

feign 的拦截器,需要实现 RequestInterceptor 接口,重写 apply() 方法。

apply() 方法参数为 RequestTemplate。

RequestTemplate 获取 url :

    //url 的路径为 被调用的服务路径,比如 b-service/user/infoString url = requestTemplate.url();

RequestTemplate 获取body 参数

    byte[] bodyBytes = requestTemplate.body();if (bodyBytes != null) {JSONObject bodyJson = (JSONObject) JSON.toJSON(bodyBytes);}

增加 header 参数:

	requestTemplate.header("xxx", "kkk");

示例:

  • FeignInterceptorConfigDemo 配置类:
@Configuration
public class FeignInterceptorConfigDemo {/*** feign 拦截器* @return*/@Beanpublic RequestInterceptor requestInterceptor() {return new MyRequestInterceptor();}/*** 实现拦截器RequestInterceptor*/static class MyRequestInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template) {//示例:添加 headertemplate.header("Content-Type", "application/json;charset=utf-8");//url 的路径为 被调用的服务路径,比如 b-service/user/infoString url = template.url();//示例:获取body 参数byte[] bodyBytes = template.body();if (bodyBytes != null) {JSONObject bodyJson = (JSONObject) JSON.toJSON(bodyBytes);System.out.println("body参数:" + bodyJson);}//示例:针对特殊的 url 进行处理if (url.contains("verifyResult")) {//处理逻辑。比如增加 header 参数、 针对特定属性进行拦截等等。template.header("userIdTest", "abcde");}}}}
  • FeignClient 注解 指定 拦截器配置:

在 configuration 属性中,指定配置为 以上设置的 FeignInterceptorConfigDemo 即可添加拦截器。

@FeignClient(name = "myService", configuration = FeignInterceptorConfigDemo.class)
@RequestMapping("/myService")
public interface MyFeignService {}
http://www.lryc.cn/news/321859.html

相关文章:

  • 蓝桥杯之简单数论冲刺
  • Http的缓存有哪些
  • Linux 网络虚拟化 Macvlan(基于物理网络接口虚拟网络接口) 认知
  • Spark-Scala语言实战(1)
  • NBlog Java定时任务-备份MySQL数据
  • 微信小程序项目实战遇到的问题
  • 网络原理(3)——TCP协议
  • nginx多级代理配置获取客户端真实ip
  • Django框架的全面指南:从入门到高级【第128篇—Django框架】
  • C++类和对象基础
  • 消息队列常见的两种消费模式
  • php的伪协议详解
  • 【研发日记】Matlab/Simulink技能解锁(四)——在Simulink Debugger窗口调试
  • 沪深主板打板胜率统计
  • Python中的列表推导式(List Comprehension)
  • MusicHiFi: Fast High-Fidelity Stereo Vocoding
  • 完美解决 RabbitMQ可视化界面Overview不显示折线图和队列不显示Messages
  • matlab 混沌系统李雅普洛夫指数谱相图分岔图和庞加莱界面
  • Linux-docker安装数据库mysql
  • 网工内推 | 七险一金,上市公司招信息安全工程师,大牛带队
  • 04.组件的组成和组件间通信
  • 【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理
  • MySQL中group_concat()用法
  • 栈队列数组试题(四)——数组和特殊矩阵
  • 数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)
  • .NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】
  • 突飞猛进,智能饮品机器人如何助力实体经济?
  • AI:150-基于深度学习的医学数据挖掘与病症关联发现
  • c语言:最大公约数
  • 12 对称加密AES和非对称加密RSA