当前位置: 首页 > 知识库问答 >
问题:

如何在Zuul过滤器中发送RESTTemplate/Request?

尤夕
2023-03-14

我有一个核心MS,它只是一个通过,并为所有传入请求添加头。我试图在Zuul过滤器中调用一个Validate Session API,以便在为所有请求添加报头之前首先调用它,如果出错,事务将不会继续。然而,似乎我无法在过滤器中发送基本的rest模板请求。那我是做错了什么,还是错过了别的什么?。这是代码片段。

public class WebFilter extends ZuulFilter {

 @Override
    public String filterType() {

        RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
        restTemplate.getForEntity(this.loginService.validateCache(hostUrl,validateSessionUrl, ctx.getRequest().getParameter("SessionId")).toUriString(),String.class

         ctx.addZuulRequestHeader("clientid", clientId);
        ctx.addZuulRequestHeader("clientsecret", clientSecret);
        return "pre";
    }
}

resttemplate部分给出了FF。错误。然而,移除它将使应用程序正常工作,然而,我需要该rest模板来调用验证API。我该把这个放在别的地方,还是别的地方?

2019-12-20 10:11:50.337错误4224--[main]O.S.Boot.SpringApplication:应用程序启动失败

进程已完成,退出代码为%1

共有1个答案

万明辉
2023-03-14

重写筛选器逻辑的run()方法

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();

...

        return null;
    }

https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html#zuul-developer-guide-sample-pre-filter

 类似资料:
  • 路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。 Netflix使用Zuul进行以下操作: 认证 洞察 压力测试 金丝雀测试 动态路由 服务迁移 负载脱落 安全 静态响应处理 主动/主动流量管理 Zuul的规则引擎允许基本上写任何JV

  • 当我试图从zuul预过滤器访问另一个REST API(在ZUUL路由中注册)时,我面临的问题是,调用变得递归,即它一次又一次地运行我的预过滤器代码。我的Usecase如下- > 在Zuul方法中,我正在验证头中传递的令牌。 在验证令牌之后,我调用一个rest服务(用户位置服务)来获取用户详细信息。我的用户位置服务本身已在ZUUL注册,如下所示: 问题是JWT令牌验证代码正在一次又一次地运行,您能否

  • 问题内容: 使用Zuul作为过滤器的代理时,如何读取响应正文? 我试图像这样调用代码: 问题答案: 我设法克服了这一点。该解决方案包括4个步骤: 读入ByteArrayOutputStream 将OutputStream复制到2 InputStreams。 使用其中之一进行自定义。 使用第二个重新分配上下文: 从点1读取流将导致无法再次读取该流,因此,您将传递尚未读取的新的新鲜流

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 我正在使用spring云网关作为边缘服务器。这就是流程 问题是,响应有响应是得到正确的200代码,注入的头是在响应上出现,但数据是不可用的响应。