• Feign拦截器应用 (F版)


    Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态)。使用Spring Cloud开发人员可以快速地完成实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作

    Feign

    使用Spring Cloud时,通常会用 Feign 来调用远程服务,比如远程服务的权限验证,需要在 header 中传递 token之类的。在方法中显示传递又过于麻烦了,这时候就可以考虑使用 Feign 提供的RequestInterceptor 接口,只要实现了该接口,那么Feign每次做远程调用之前都可以被它拦截下来在进行包装

    Try

    准备三个工程,分别是 eureka-serverorder-serverproduct-server

    Eureka Server

    详情参考第一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码

    Product Server

    一个普通的 Eureka Client 即可,详情参考上一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码

    唯一变动

    为了体现 RequestInterceptor 生效,将返回的消息做了下调整

    1
    2
    3
    4
    @GetMapping("/products/{id}")
    public String query(@PathVariable Long id, @RequestHeader String token) {
    return id + ":Spring Boot... token = " + token;
    }

    Order Server

    在上一章的基础之上做了扩展,创建一个 FeignInterceptor 实现 RequestInterceptor 的接口,这样就可以将需要传递的内容设置到 RequestTemplate 中,然后在服务的另外一端就可以通过 request.getHeader("key") 的方式进行获取了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Configuration
    public class FeignInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
    requestTemplate.header("token", "10086");
    }

    }

    流程图

    画图工具:https://www.processon.com/

    流程图流程图

  • 相关阅读:
    中国大学排名爬虫
    基于bs4库的HTML内容查找方法和HTML格式化和编码
    自动化提取51啦数据的信息
    简单目录扫描工具
    一个简单音乐播放器
    【原创】C++中对象的序列化
    [android]android开发中的运行错误之:adb.exe
    [转载]十大编程算法助程序员走上高手之路
    [原创]二叉树相关笔试题代码
    [原创]VS2010中创建动态链接库及其调用
  • 原文地址:https://www.cnblogs.com/lywJ/p/10715666.html
Copyright © 2020-2023  润新知