Spring boot 如何针对特定情况禁用zuul筛选器,并且不发送到映射的URL

Spring boot 如何针对特定情况禁用zuul筛选器,并且不发送到映射的URL,spring-boot,netflix-zuul,spring-cloud-netflix,Spring Boot,Netflix Zuul,Spring Cloud Netflix,我用route config实现了zuul过滤器 related: path: /api/search/related/** url: http://abc.xyz.neverhit.this.URl 并运行实现 @Override public Object run() { RequestContext context = getCurrentContext(); HttpServletRequest request = c

我用route config实现了zuul过滤器

 related:
      path: /api/search/related/**
      url: http://abc.xyz.neverhit.this.URl
并运行实现

 @Override
    public Object run() {
        RequestContext context = getCurrentContext();
        HttpServletRequest request = context.getRequest();
        UriComponents uri = UriComponentsBuilder.fromHttpUrl(recommendationsServiceHostname)
            .path("/recommendations/related")
            .query(request.getQueryString()).build();

        if (shouldRouteToRecommendationsService(request, uri)) {
            logger.info("Calling  proxy service");


            try {
                context.setRouteHost(new URL(uri.toString()));
            } catch (MalformedURLException ex) {
                logger.error("MalformedURLException for URL:" + uri.toString());
            }
        }
        else
        {
            //Something here or Solution that should handle a request like a filter is not present.
        }
        return null;
}
if部分工作正常,并将请求发送到代理服务。问题在于其他方面。 我要寻找的是,在其他场景中,它的行为应该像从未存在过的过滤器一样,并且它应该处理它正在处理来自本地代码的早期执行API调用的请求


有任何黑客攻击或正确的解决方案吗?

您应该将代码移动到
shouldFilter()
,返回
true
,以防调用代理,返回
false
,如果您不想。尝试过。但在这种情况下,当shouldFilter返回false时,它正在命中已配置的URL,而不是内部APIshouldFilter仅决定是否应执行筛选器的run方法,返回false表示将执行已配置的URL,我没有得到的部分是您在else bockBy内部API中提到的内部API,我的意思是调用现有代码忽略配置的过滤器路由。所以,如果我重新构造问题,我想在特定条件下运行一个过滤器,如果该条件为false,则将其全部忽略。在这种情况下,@HemantPatel指出的答案是正确的,当过滤器从未运行时,如果找到匹配路径,即/api/search/related,zuul将命中/**