iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么通过zuul添加或修改请求参数
  • 684
分享到

怎么通过zuul添加或修改请求参数

2023-06-20 17:06:33 684人浏览 八月长安
摘要

这篇文章主要为大家展示了“怎么通过zuul添加或修改请求参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么通过zuul添加或修改请求参数”这篇文章吧。zuul添加或修改请求参数一、为什么要用

这篇文章主要为大家展示了“怎么通过zuul添加或修改请求参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么通过zuul添加或修改请求参数”这篇文章吧。

zuul添加或修改请求参数

一、为什么要用到这个

在基于 SpringCloud 构建的微服务系统中,通常使用网关zuul来进行一些用户验证等过滤的操作,比如 用户在 header 或者 url 参数中存放了 token ,网关层需要 用该 token 查出用户 的 userId ,并存放于 request 中,以便后续微服务可以直接使用而避免再去用 token 查询。

二、基础知识

在 zuul 中最大的用法的除了路由之外,就是过滤器了,自定义过滤器需实现接口 ZuulFilter ,在 run() 方法中,可以用

RequestContext ctx = RequestContext.getCurrentContext();httpservletRequest request = ctx.getRequest();

获取到 request,但是在 request 中只有 getParameter() 而没有 setParameter() 方法,所以直接修改 url 参数不可行,另外在 reqeust 中虽然可以使用 setAttribute() ,但是可能由于作用域的不同,在这里设置的 attribute 在后续的微服务中是获取不到的,因此必须考虑另外的方式。

三、具体做法

最后确定的可行的方法是,用

ctx.setRequest(new HttpServletRequestWrapper(request) {})

的方式,重新构造上下文中的 request ,代码如下:

// 例如在请求参数中添加 userIdtry {  InputStream in = ctx.getRequest().getInputStream();  String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));  if(StringUtils.isBlank(body)){    body = "{}";  }  JSONObject jsonObject = JSON.parseObject(body);  jsonObject.put("userId", 666);  String newBody = jsonObject.toString();  final byte[] reqBodyBytes = newBody.getBytes();  ctx.setRequest(new HttpServletRequestWrapper(request){        @Override    public ServletInputStream getInputStream() throws ioException {      return new ServletInputStreamWrapper(reqBodyBytes);    }    @Override    public int getContentLength() {      return reqBodyBytes.length;    }    @Override    public long getContentLengthLong() {      return reqBodyBytes.length;    }  });} catch (IOException e) {  e.printStackTrace();}

思路就是,获取请求的输入流,并重写,即重写json参数。

在后续的微服务的 controller 中,通过下面的方式获取通过zuul添加或修改的请求参数。

InputStream in = request().getInputStream();String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));if(StringUtils.isNotBlank(body)){  JSONObject jsonObject = JSON.parseObject(body);  Object userId = jsonObject.get("userId");}

zuul修改请求url

除了修改请求参数、设置响应header,响应body外,还有一种需求就是url重新,或者是修改url,这里简述一下怎么在zuul修改url。

转发配置

demo:  ribbon:    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList    listOfServers: 192.168.99.100,192.168.99.101zuul:  routes:    demo:      path: /demo/**      stripPrefix: true      serviceId: demo

filter配置

@Componentpublic class UrlPathFilter extends ZuulFilter{    @Override    public String filterType() {        return FilterConstants.PRE_TYPE;    }    @Override    public int filterOrder() {        return FilterConstants.PRE_DECORATION_FILTER_ORDER + 1;    }    @Override    public boolean shouldFilter() {        final String serviceId = (String) RequestContext.getCurrentContext().get("proxy");        return "demo".equals(serviceId);    }    @Override    public Object run() {        RequestContext context = RequestContext.getCurrentContext();        Object originalRequestPath = context.get(FilterConstants.REQUEST_URI_KEY);        //http://localhost:10000/demo/list/data        //-->/api/prefix/list/data        String modifiedRequestPath = "/api/prefix" + originalRequestPath;        context.put(FilterConstants.REQUEST_URI_KEY, modifiedRequestPath);        return null;    }}

这样就大功告成了!

以上是“怎么通过zuul添加或修改请求参数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 怎么通过zuul添加或修改请求参数

本文链接: https://www.lsjlt.com/news/298779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么通过zuul添加或修改请求参数
    这篇文章主要为大家展示了“怎么通过zuul添加或修改请求参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么通过zuul添加或修改请求参数”这篇文章吧。zuul添加或修改请求参数一、为什么要用...
    99+
    2023-06-20
  • 如何通过zuul添加或修改请求参数
    zuul添加或修改请求参数 一、为什么要用到这个 在基于 springcloud 构建的微服务系统中,通常使用网关zuul来进行一些用户验证等过滤的操作,比如 用户在 header ...
    99+
    2024-04-02
  • SpringAOP怎么修改请求参数列表
    这篇“SpringAOP怎么修改请求参数列表”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringAOP怎么修改请求参数...
    99+
    2023-07-05
  • Linux系统怎么通过grub添加内核参数
    这篇文章主要为大家展示了“Linux系统怎么通过grub添加内核参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统怎么通过grub添加内核参数”这篇文章吧。如果你在使用GRUB引导...
    99+
    2023-06-28
  • 怎么在Linux上通过GRUB添加内核参数
    这篇文章主要为大家展示了“怎么在Linux上通过GRUB添加内核参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么在Linux上通过GRUB添加内核参数”这篇文章吧。在Linux上通过GRU...
    99+
    2023-06-16
  • Vuejs怎么通过Axios请求数据
    本文小编为大家详细介绍“Vuejs怎么通过Axios请求数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vuejs怎么通过Axios请求数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通过Axios请求数据...
    99+
    2023-06-29
  • uniapp怎么通过导航栏添加函数
    uniapp是一款基于Vue.js框架的开发工具,简单易用,适合快速迭代,同时具有跨平台的特性,可以同时发布小程序、H5页面、App等多个端。在uniapp中,导航栏是我们页面中必不可少的组件之一,它可以用作页面的标题栏、返回按钮等。对于开...
    99+
    2023-05-14
  • java怎么通过参数改变窗口大小
    在Java中,你可以使用`setPreferredSize(Dimension d)`方法来通过参数改变窗口大小。下面是一个简单的示...
    99+
    2023-10-07
    java
  • OpenApi Generator Golang - 添加标头以在查询参数中结束的请求如何修复?
    php小编香蕉在使用OpenApi Generator Golang时,遇到了一个问题:当在查询参数中结束请求时,如何添加标头以修复这个问题。在这篇文章中,我们将探讨这个问题的解决方案...
    99+
    2024-02-10
  • 怎么使用cURL在PHP中POST请求增加参数
    今天小编给大家分享一下怎么使用cURL在PHP中POST请求增加参数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,我们...
    99+
    2023-07-05
  • oracle数据库中怎么添加修改删除行
    oracle数据库中怎么添加修改删除行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。向表中添加行:INSERT语句勇于向表中添...
    99+
    2024-04-02
  • SpringBoot怎么用实体接收Get请求传递过来的多个参数
    这篇文章主要介绍了SpringBoot怎么用实体接收Get请求传递过来的多个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么用实体接收Get请求传递过来的多个参数文章都会有所收获,下面...
    99+
    2023-06-30
  • 怎么在Win7中通过修改注册表加快程序反应
    怎么在Win7中通过修改注册表加快程序反应?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。打开注册表,可以选择在“开始菜单”中搜索“regedit”,回车运行,或者Win+R,打...
    99+
    2023-06-14
  • 怎么通过修改jdbc配置文件方式修改Weblogic数据源密码
    这篇文章主要讲解了“怎么通过修改jdbc配置文件方式修改Weblogic数据源密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过修改jdbc配置文件方式修改Weblogic数据源密码...
    99+
    2023-06-04
  • jQuery怎么通过Ajax向PHP服务端发送请求并返回JSON数据
    这篇文章主要介绍“jQuery怎么通过Ajax向PHP服务端发送请求并返回JSON数据”,在日常操作中,相信很多人在jQuery怎么通过Ajax向PHP服务端发送请求并返回JSON数据问题上存在疑惑,小编查...
    99+
    2024-04-02
  • Mysql表数据比较大情况下怎么修改添加字段
    这篇文章主要介绍了Mysql表数据比较大情况下怎么修改添加字段的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql表数据比较大情况下怎么修改添加字段文章都会有所收获,下面我们一起来看看吧。前言如果一张表在后...
    99+
    2023-07-02
  • Numpy数组操作之元素添加、删除和修改怎么实现
    这篇文章主要介绍“Numpy数组操作之元素添加、删除和修改怎么实现”,在日常操作中,相信很多人在Numpy数组操作之元素添加、删除和修改怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Numpy数组操作...
    99+
    2023-07-05
  • SQL Server数据库中怎么添加修改删除字段说明的
    SQL Server数据库中怎么添加修改删除字段说明的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  SQLServer数据...
    99+
    2024-04-02
  • VUE直接通过JS修改html对象的值导致没有更新到数据中怎么办
    小编给大家分享一下VUE直接通过JS修改html对象的值导致没有更新到数据中怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作