From 277ada8b88c55d7601a00edc01c907178c0de242 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 25 Sep 2014 15:21:41 -0600 Subject: [PATCH 1/2] don't strip proxy prefix by default (for spring data rest) --- .../cloud/netflix/zuul/RibbonCommand.java | 5 +---- .../cloud/netflix/zuul/ZuulProxyProperties.java | 1 + .../netflix/zuul/filters/pre/PreDecorationFilter.java | 9 +++++++-- .../src/test/resources/application.yml | 6 ++++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RibbonCommand.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RibbonCommand.java index bc0fdd2b..b2107601 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RibbonCommand.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RibbonCommand.java @@ -33,7 +33,6 @@ public class RibbonCommand extends HystrixCommand { MultivaluedMap params; InputStream requestEntity; - public RibbonCommand(RestClient restClient, Verb verb, String uri, @@ -43,7 +42,6 @@ public class RibbonCommand extends HystrixCommand { this("default", restClient, verb, uri, headers, params, requestEntity); } - public RibbonCommand(String commandKey, RestClient restClient, Verb verb, @@ -76,11 +74,10 @@ public class RibbonCommand extends HystrixCommand { } } - HttpResponse forward() throws Exception { + private HttpResponse forward() throws Exception { RequestContext context = RequestContext.getCurrentContext(); - Builder builder = HttpRequest.newBuilder(). verb(verb). uri(uri). diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java index f7cfc06d..cd8e56af 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java @@ -10,4 +10,5 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties("zuul.proxy") public class ZuulProxyProperties { private String mapping = "/proxy"; + private boolean stripMapping = false; } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java index 5368a2f0..1be07c07 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java @@ -44,9 +44,14 @@ public class PreDecorationFilter extends ZuulFilter { String requestURI = ctx.getRequest().getRequestURI(); - //remove proxy prefix TODO: only if embedded proxy String proxyMapping = properties.getMapping(); - final String uriPart = requestURI.replace(proxyMapping, ""); //TODO: better strategy? + + final String uriPart; + if (properties.isStripMapping()) { + uriPart = requestURI.replace(proxyMapping, ""); //TODO: better strategy? + } else { + uriPart = requestURI; + } ctx.put("requestURI", uriPart); LinkedHashMap routesMap = routes.getRoutes(); diff --git a/spring-cloud-netflix-core/src/test/resources/application.yml b/spring-cloud-netflix-core/src/test/resources/application.yml index 139ea8cf..1b407c56 100644 --- a/spring-cloud-netflix-core/src/test/resources/application.yml +++ b/spring-cloud-netflix-core/src/test/resources/application.yml @@ -9,6 +9,8 @@ eureka: zuul: proxy: + mapping: /api route: - testclient: /testing123 - stores: /stores + testclient: /api/testing123 + stores: /api/stores + customers: /api/customers From 166ab38882219602ffbfae8d92a8d2833e3a6c48 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 17 Oct 2014 18:29:21 -0600 Subject: [PATCH 2/2] make stripMapping default to true to not change the current functionality --- .../springframework/cloud/netflix/zuul/ZuulProxyProperties.java | 2 +- spring-cloud-netflix-core/src/test/resources/application.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java index cd8e56af..21793e86 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyProperties.java @@ -10,5 +10,5 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties("zuul.proxy") public class ZuulProxyProperties { private String mapping = "/proxy"; - private boolean stripMapping = false; + private boolean stripMapping = true; // this is currently the default behaviour } diff --git a/spring-cloud-netflix-core/src/test/resources/application.yml b/spring-cloud-netflix-core/src/test/resources/application.yml index 1b407c56..20dbfa6b 100644 --- a/spring-cloud-netflix-core/src/test/resources/application.yml +++ b/spring-cloud-netflix-core/src/test/resources/application.yml @@ -10,6 +10,7 @@ eureka: zuul: proxy: mapping: /api + stripMapping: false route: testclient: /api/testing123 stores: /api/stores