ZuulFilter修改参数并传递给后续微服务

最近弄的参数加解密,用到了这个,百度了一大堆,没有解决问题,有点办法是传递到了后续微服务后参数重复了,有的说是传json后续微服务没有收到参数等问题,废了老半天劲,终于解决了。废话不多直接上代码

package com.mytcyh.server.filter;import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.http.ServletInputStreamWrapper;import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.IOException;/*** @author JohnsonShen* Create in 2020/5/14*/
public class DemoFilter extends ZuulFilter {/*** 设置为前置拦截器*/@Overridepublic String filterType() {return "pre";}/*** 优先级,数字越大,优先级越低* 这个根据实际情况去设置*/@Overridepublic int filterOrder() {return 0;}/*** 判断 filter的 run方法是否需要执行,true执行,false不执行* 可以用来判断请求地址是否需要进行当前filter的验证*/@Overridepublic boolean shouldFilter() {RequestContext currentContext = RequestContext.getCurrentContext();return !currentContext.getRequest().getRequestURI().matches("这里是过滤的正则");}@Overridepublic Object run() {RequestContext currentContext = RequestContext.getCurrentContext();/** 这里要对请求参数的修改* 获取参数可以使用 currentContext.getRequest().getParameter(..) 来获取* 修改之后如果要传递到后续的微服务格式必须是:*  key1=value1&key2=value2....key_n=value_n* 一定要注意这个字符串的格式,不要传json什么的*/byte[] p = "username=zhangsan&password=123456".getBytes();currentContext.setRequest(new HttpServletRequestWrapper(currentContext.getRequest()){/*** 这里边一定要使用 key1=value1&key2=value2....key_n=value_n 形式的,要不然你也获取不到*/@Overridepublic ServletInputStream getInputStream() throws IOException {return new ServletInputStreamWrapper(p);}@Overridepublic int getContentLength() {return p.length;}@Overridepublic long getContentLengthLong() {return p.length;}});return null;}
}

OK 了

ZuulFilter修改参数并传递给后续微服务相关推荐

  1. springcloudalibaba架构(31):SpringCloud实现用户信息在微服务之间传递(Feign和Dubbo)

    文章目录 前言 第一节 微服务间用户信息传递问题 第二节 解决思路 第三节 实践操作(基于Feign) 1. 调用链路说明 2. shop-common改造 3. 开启注解 4. 启动服务器测试 第四 ...

  2. DDD微服务架构设计第四课 DDD指导微服拆分和落地实现

    07 在线订餐场景中是如何开事件风暴会议的? 微服务设计最核心的难题是微服务的拆分,不合理的微服务拆分不仅不能提高研发效率,反倒还使得研发效率更低,因此要讲究"小而专"的设计.&q ...

  3. 微服务架构,springcloud核心组件和实战,docker容器

    文章目录 前言 一.微服务开发基础 1.微服务架构开发 1.1单体架构的应用的困境 1.2 微服务架构 1.2.1 理解微服务架构 1.2.1 微服务的优缺点 1.3 微服务架构设计 1.3.1 微服 ...

  4. 九、SpringCloud基础微服务结构详解

    技术总结 架构图 一.系统架构演变 随着互联网的发展,网站应用的规模不断扩大.需求的激增,带来的是技术上的压力.系统架构也因此也不断的演进.升级.迭代.从单一应用,到垂直拆分,到分布式服务,到SOA, ...

  5. 89-Spring Cloud 微服务详解

    Spring Cloud 微服务详解 微服务架构: 在说明该架构之前,再次的说明互联网应用架构演进(虽然之前说明过了) 随着互联网的发展,用户群体逐渐扩大,网站的流量成倍增长,常规的单体架构已无法满足 ...

  6. 当中台遇上DDD,我们该如何设计微服务?

    微服务架构有哪些模型?中台.领域驱动设计及微服务之间有着什么样的关系?微服务的边界设计怎么做?怎么做设计和拆分?且看作者为你娓娓道来. 借用当下最流行的段子做个开场白. "设计原则千万条,高 ...

  7. 企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路

    作者:魁予.十眠 如何落地可灰度.可观测.可回滚的安全生产三板斧能力,满足业务高速发展情况下快速迭代和小心验证的诉求,是企业在微服务化深入过程中必须要面对的问题.在云原生流行的当下,这个问题又有了一些 ...

  8. seata xid是什么_微服务分布式事务解决方案-springboot整合分布式seata1.3.0

    概述 Seat是蚂蚁金服和阿里巴巴联合推出的一个开源的分布式事务框架,在阿里云商用的叫做GTS. 项目地址:https://github.com/longxiaonan/springcloud-dem ...

  9. 微服务与SOA以及服务间通讯协议

    说到微服务,就一定会想到微服务.分布式.集群.SOA.SOAP.restful.Http.RPC等相关概念,而这些概念都一些界限都非常的模式,很难理清楚确切的概念,本篇主要是介绍我对微服务中常遇到的一 ...

最新文章

  1. 二十五、内存的基础知识
  2. 简析TCP的三次握手与四次分手【转】
  3. 第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
  4. 操作系统——理论知识
  5. 牛客 - 四等分的角度(几何)
  6. 到底图啥?百度工程师非法控制155台服务器“挖矿”,被判刑3年
  7. linux内核模块的程序结构
  8. php yii2 观察者模式,观察者模式(Observer)
  9. python 特征选择卡方_4. 机器学习之特征选择-Python代码
  10. 揭秘你不知道的京东管理体系!
  11. android手机界面分区,Android手机fastboot 刷机命令(示例代码)
  12. 编程入门: 自学编程从哪里开始? [初学参考]
  13. UML10种图例之包图
  14. 解决 python安装pip问题
  15. iOS如何完成蓝牙打印机功能
  16. Win8各国语言包的安装,让系统变成你想要的语言版,带你体验不一样的输入法
  17. 搭建tileserver-gl地图服务
  18. Jetson TX2 power mode功耗模式
  19. [MATLAB]--数据插值(interp1/2多维插值)
  20. Linux 下实现虚拟专用网(PPTP)

热门文章

  1. mysql 递归查询效率_mysql 递归查询
  2. 计算机常用英语 (带音标),常用计算机英语大全(含音标).doc
  3. python字符串equals方法_编写equals方法
  4. 河北大学计算机学院张小升,院系动态
  5. java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统
  6. 安卓手机突然很卡_为什么我的手机突然变卡了
  7. Linux命令之移动文件与目录或重命名
  8. Atl Com组件DLL非注册调用
  9. Vmware Workstation 12 安装 win7(ghost版本)
  10. 华为Mate40Pro+什么时候上市