ZuulFilter修改参数并传递给后续微服务
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修改参数并传递给后续微服务相关推荐
- springcloudalibaba架构(31):SpringCloud实现用户信息在微服务之间传递(Feign和Dubbo)
文章目录 前言 第一节 微服务间用户信息传递问题 第二节 解决思路 第三节 实践操作(基于Feign) 1. 调用链路说明 2. shop-common改造 3. 开启注解 4. 启动服务器测试 第四 ...
- DDD微服务架构设计第四课 DDD指导微服拆分和落地实现
07 在线订餐场景中是如何开事件风暴会议的? 微服务设计最核心的难题是微服务的拆分,不合理的微服务拆分不仅不能提高研发效率,反倒还使得研发效率更低,因此要讲究"小而专"的设计.&q ...
- 微服务架构,springcloud核心组件和实战,docker容器
文章目录 前言 一.微服务开发基础 1.微服务架构开发 1.1单体架构的应用的困境 1.2 微服务架构 1.2.1 理解微服务架构 1.2.1 微服务的优缺点 1.3 微服务架构设计 1.3.1 微服 ...
- 九、SpringCloud基础微服务结构详解
技术总结 架构图 一.系统架构演变 随着互联网的发展,网站应用的规模不断扩大.需求的激增,带来的是技术上的压力.系统架构也因此也不断的演进.升级.迭代.从单一应用,到垂直拆分,到分布式服务,到SOA, ...
- 89-Spring Cloud 微服务详解
Spring Cloud 微服务详解 微服务架构: 在说明该架构之前,再次的说明互联网应用架构演进(虽然之前说明过了) 随着互联网的发展,用户群体逐渐扩大,网站的流量成倍增长,常规的单体架构已无法满足 ...
- 当中台遇上DDD,我们该如何设计微服务?
微服务架构有哪些模型?中台.领域驱动设计及微服务之间有着什么样的关系?微服务的边界设计怎么做?怎么做设计和拆分?且看作者为你娓娓道来. 借用当下最流行的段子做个开场白. "设计原则千万条,高 ...
- 企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路
作者:魁予.十眠 如何落地可灰度.可观测.可回滚的安全生产三板斧能力,满足业务高速发展情况下快速迭代和小心验证的诉求,是企业在微服务化深入过程中必须要面对的问题.在云原生流行的当下,这个问题又有了一些 ...
- seata xid是什么_微服务分布式事务解决方案-springboot整合分布式seata1.3.0
概述 Seat是蚂蚁金服和阿里巴巴联合推出的一个开源的分布式事务框架,在阿里云商用的叫做GTS. 项目地址:https://github.com/longxiaonan/springcloud-dem ...
- 微服务与SOA以及服务间通讯协议
说到微服务,就一定会想到微服务.分布式.集群.SOA.SOAP.restful.Http.RPC等相关概念,而这些概念都一些界限都非常的模式,很难理清楚确切的概念,本篇主要是介绍我对微服务中常遇到的一 ...
最新文章
- 二十五、内存的基础知识
- 简析TCP的三次握手与四次分手【转】
- 第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
- 操作系统——理论知识
- 牛客 - 四等分的角度(几何)
- 到底图啥?百度工程师非法控制155台服务器“挖矿”,被判刑3年
- linux内核模块的程序结构
- php yii2 观察者模式,观察者模式(Observer)
- python 特征选择卡方_4. 机器学习之特征选择-Python代码
- 揭秘你不知道的京东管理体系!
- android手机界面分区,Android手机fastboot 刷机命令(示例代码)
- 编程入门: 自学编程从哪里开始? [初学参考]
- UML10种图例之包图
- 解决 python安装pip问题
- iOS如何完成蓝牙打印机功能
- Win8各国语言包的安装,让系统变成你想要的语言版,带你体验不一样的输入法
- 搭建tileserver-gl地图服务
- Jetson TX2 power mode功耗模式
- [MATLAB]--数据插值(interp1/2多维插值)
- Linux 下实现虚拟专用网(PPTP)
热门文章
- mysql 递归查询效率_mysql 递归查询
- 计算机常用英语 (带音标),常用计算机英语大全(含音标).doc
- python字符串equals方法_编写equals方法
- 河北大学计算机学院张小升,院系动态
- java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统
- 安卓手机突然很卡_为什么我的手机突然变卡了
- Linux命令之移动文件与目录或重命名
- Atl Com组件DLL非注册调用
- Vmware Workstation 12 安装 win7(ghost版本)
- 华为Mate40Pro+什么时候上市