From 6df7190472e1e56890351134164dd1336f4da411 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 3 Mar 2017 15:19:10 -0700 Subject: [PATCH] Update docs for REQUEST_URI_KEY in zuul --- docs/src/main/asciidoc/spring-cloud-netflix.adoc | 2 ++ .../cloud/netflix/zuul/filters/ProxyRequestHelper.java | 9 +++++---- .../netflix/zuul/filters/support/FilterConstants.java | 2 +- .../netflix/zuul/filters/ProxyRequestHelperTests.java | 9 +++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index 86f07abb..8d61304d 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -1917,6 +1917,8 @@ The filter above populates `SERVICE_ID_KEY` from the `foo` request parameter. In Now that `SERVICE_ID_KEY` is populated, `PreDecorationFilter` won't run and `RibbonRoutingFilter` will. If you wanted to route to a full URL instead, call `ctx.setRouteHost(url)` instead. +To modify the path that routing filters will forward to, set the `REQUEST_URI_KEY`. + ==== How to Write a Route Filter Route filters are run after pre filters and are used to make requests to other services. Much of the work here is to translate request and response data to and from the client required model. diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelper.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelper.java index 85bdb599..043eede8 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelper.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelper.java @@ -16,9 +16,6 @@ package org.springframework.cloud.netflix.zuul.filters; -import static org.springframework.http.HttpHeaders.CONTENT_ENCODING; -import static org.springframework.http.HttpHeaders.CONTENT_LENGTH; - import java.io.IOException; import java.io.InputStream; import java.util.Collection; @@ -45,6 +42,10 @@ import org.springframework.web.util.WebUtils; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.util.HTTPRequestUtils; +import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.REQUEST_URI_KEY; +import static org.springframework.http.HttpHeaders.CONTENT_ENCODING; +import static org.springframework.http.HttpHeaders.CONTENT_LENGTH; + import lombok.extern.apachecommons.CommonsLog; /** @@ -88,7 +89,7 @@ public class ProxyRequestHelper { public String buildZuulRequestURI(HttpServletRequest request) { RequestContext context = RequestContext.getCurrentContext(); String uri = request.getRequestURI(); - String contextURI = (String) context.get("requestURI"); + String contextURI = (String) context.get(REQUEST_URI_KEY); if (contextURI != null) { try { uri = UriUtils.encodePath(contextURI, characterEncoding(request)); diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/support/FilterConstants.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/support/FilterConstants.java index 77274063..02b3fe3d 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/support/FilterConstants.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/support/FilterConstants.java @@ -51,7 +51,7 @@ public interface FilterConstants { String REQUEST_ENTITY_KEY = "requestEntity"; /** - * Zuul {@link com.netflix.zuul.context.RequestContext} key for use in TODO: determine use + * Zuul {@link com.netflix.zuul.context.RequestContext} key for use in to override the path of the request. */ String REQUEST_URI_KEY = "requestURI"; diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelperTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelperTests.java index 4d211dc0..d0a4a827 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelperTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRequestHelperTests.java @@ -43,6 +43,7 @@ import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.MockitoAnnotations.initMocks; +import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.REQUEST_URI_KEY; /** * @author Spencer Gibb @@ -290,7 +291,7 @@ public class ProxyRequestHelperTests { request.setCharacterEncoding("UTF-8"); final RequestContext context = RequestContext.getCurrentContext(); context.setRequest(request); - context.set("requestURI", decodedURI); + context.set(REQUEST_URI_KEY, decodedURI); final String requestURI = new ProxyRequestHelper().buildZuulRequestURI(request); assertThat(requestURI, equalTo(encodedURI)); @@ -304,7 +305,7 @@ public class ProxyRequestHelperTests { MockHttpServletRequest request = new MockHttpServletRequest("GET", encodedURI); final RequestContext context = RequestContext.getCurrentContext(); context.setRequest(request); - context.set("requestURI", decodedURI); + context.set(REQUEST_URI_KEY, decodedURI); final String requestURI = new ProxyRequestHelper().buildZuulRequestURI(request); assertThat(requestURI, equalTo(encodedURI)); @@ -318,7 +319,7 @@ public class ProxyRequestHelperTests { request.setCharacterEncoding("UTF-8"); RequestContext context = RequestContext.getCurrentContext(); - context.set("requestURI", requestURI); + context.set(REQUEST_URI_KEY, requestURI); ProxyRequestHelper helper = new ProxyRequestHelper(); @@ -334,7 +335,7 @@ public class ProxyRequestHelperTests { MockHttpServletRequest request = new MockHttpServletRequest("GET", requestURI); RequestContext context = RequestContext.getCurrentContext(); - context.set("requestURI", requestURI); + context.set(REQUEST_URI_KEY, requestURI); ProxyRequestHelper helper = new ProxyRequestHelper();