2016-06-03 2 views
2

Я пытаюсь создать фильтр («pre», 50), который добавит параметры запроса по умолчанию к запросу, если они не существуют.Изменить параметры запроса в фильтре Zuul

Я основывал свою работу до сих пор в сочетании:

Чтобы создать новый запрос: http://www.ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/

Чтобы установить новый запрос в объекте RequestContext: How to pass modified/wrapped HTTPServletRequest to subsequent Zuul Filters?

Map<String, String[]> extraParams = new TreeMap<String, String[]>(); 

if (!params.containsKey("language")) { 
    extraParams.put("language", new String[]{"en"}); 
    params.put("language", Arrays.asList("en")); 
} 
if (!params.containsKey("country")) { 
    extraParams.put("country", new String[]{"us"}); 
    params.put("country", Arrays.asList("us")); 
} 

HttpServletRequest request = ctx.getRequest(); 
HttpServletRequest wrapped = new WrappedRequest(request, extraParams); 
ctx.setRequest(wrapped); 
ctx.setRequestQueryParams(params); 

Я также изменил RequestQueryParams с новыми параметрами, но он тоже не работает.

Любые идеи?

ответ

0

Вам нужно будет создать настраиваемый фильтр маршрутизации, который добавит к запросу.

Посмотрите на код RibbonRoutingFilter, он создает новый запрос на основе входящего запроса, а затем новый запрос направляется в службу. Он также играет с запросом Params, который может помочь вам в том, как добавить к нему дополнительные параметры.

0

см. SendResponseFilter.getQueryString() и создайте новый фильтр как SendResponseFilter.java, отредактируйте getQueryString(). и установить: zuul.SimpleHostRoutingFilter.route.disable = истинные

1

Я сталкивался с этой проблемой раньше, пожалуйста, следуйте следующие методы:

Map<String, List<String>> params = ctx.getRequestQueryParams(); 
    if (params == null) { 
     params = Maps.newHashMap(); 
    } 
    for (String key : checkMap.keySet()) { 
     params.put(key, Lists.newArrayList(checkMap.get(key).toString())); 
    } 
    ctx.setRequestQueryParams(params); 
Смежные вопросы