2017-10-11 103 views
0

我已重写在一个ZuulFilter作为输送头失败

RequestContext ctx = RequestContext.getCurrentContext(); 
ctx.addZuulRequestHeader('header name', 'value'); 

然而,在另一个服务我不能找到来自请求的报头中的run()方法。

更多细节,filterType"pre"且只有一个过滤器。

+0

能否请您提供更多的细节。它是什么样的过滤器(前,路线,后)?它是什么顺序? – spencergibb

+0

@spencergibb前,只有一个滤波器阶数为0 –

回答

0

页眉在Zuul过滤器添加,

context.addZuulRequestHeader("my-header", "my-value"); 

可以用另一种过滤器这样被检索,

context.getZuulRequestHeaders().get("my-header"); 

我也尽量保持我的预滤波器阶低,例如,-1000 ;

您可以检索在内部服务的头,Zuul的客户端,你会为任何其他头去做。没有定期请求报头和Zuul头之间,例如区别

@RequestMapping(value = /abc/hello, method = RequestMethod.GET) 
public MyObject read(@RequestHeader("my-header") String value) { 
    ... 
} 
+0

我怎样才能在Zuul客户getZuulRequestHeaders? –

+0

更新我的帖子用一个例子。 –

0

实施例过滤器将报头添加:在应用配置中

public class AddHeaderFilter extends ZuulFilter { 
    public String filterType() { 
     return "pre"; 
    } 

    public int filterOrder() { 
     return 100; 
    } 

    public boolean shouldFilter() { 
     return true; 
    } 

    public Object run() { 
     RequestContext context = RequestContext.getCurrentContext(); 
     context.addZuulRequestHeader('header name', "value"); 
     return null; 
    } 

} 

然后,你必须加载过滤器作为豆:

@Bean 
AddHeaderFilter addHeaderFilter() { 
    return new AddHeaderFilter(); 
}