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 eb6fba67..80d30d20 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 = true; // this is currently the default behaviour } 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..20dbfa6b 100644 --- a/spring-cloud-netflix-core/src/test/resources/application.yml +++ b/spring-cloud-netflix-core/src/test/resources/application.yml @@ -9,6 +9,9 @@ eureka: zuul: proxy: + mapping: /api + stripMapping: false route: - testclient: /testing123 - stores: /stores + testclient: /api/testing123 + stores: /api/stores + customers: /api/customers