2017-10-11 40 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(); 
}