diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboLoadBalancedRestTemplateAutoConfiguration.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboLoadBalancedRestTemplateAutoConfiguration.java
index 4245a5f8..15eb6cf3 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboLoadBalancedRestTemplateAutoConfiguration.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/autoconfigure/DubboLoadBalancedRestTemplateAutoConfiguration.java
@@ -26,7 +26,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.cloud.alibaba.dubbo.annotation.DubboTransported;
-import org.springframework.cloud.alibaba.dubbo.client.loadbalancer.DubboAdapterLoadBalancerInterceptor;
+import org.springframework.cloud.alibaba.dubbo.client.loadbalancer.DubboMetadataInitializerInterceptor;
+import org.springframework.cloud.alibaba.dubbo.client.loadbalancer.DubboTransporterInterceptor;
import org.springframework.cloud.alibaba.dubbo.metadata.DubboTransportedMetadata;
import org.springframework.cloud.alibaba.dubbo.metadata.repository.DubboServiceMetadataRepository;
import org.springframework.cloud.alibaba.dubbo.service.DubboGenericServiceExecutionContextFactory;
@@ -124,7 +125,7 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
/**
- * Adapt the instance of {@link DubboAdapterLoadBalancerInterceptor} to the {@link LoadBalancerInterceptor} Bean.
+ * Adapt the instance of {@link DubboTransporterInterceptor} to the {@link LoadBalancerInterceptor} Bean.
*
* @param restTemplate {@link LoadBalanced @LoadBalanced} {@link RestTemplate} Bean
* @param dubboTranslatedAttributes the annotation dubboTranslatedAttributes {@link RestTemplate} bean being annotated
@@ -138,11 +139,13 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
int index = interceptors.indexOf(loadBalancerInterceptor);
- if (index > -1) {
- interceptors.set(index, new DubboAdapterLoadBalancerInterceptor(repository, loadBalancerInterceptor,
- restTemplate.getMessageConverters(), classLoader,
- dubboTransportedMetadata, serviceFactory, contextFactory));
- }
+ index = index < 0 ? 0 : index;
+
+ // Add ClientHttpRequestInterceptor instances before loadBalancerInterceptor
+ interceptors.add(index++, new DubboMetadataInitializerInterceptor(repository));
+
+ interceptors.add(index++, new DubboTransporterInterceptor(repository, restTemplate.getMessageConverters(),
+ classLoader, dubboTransportedMetadata, serviceFactory, contextFactory));
restTemplate.setInterceptors(interceptors);
}
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboClientHttpResponse.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboClientHttpResponse.java
index f82d8dbd..25ba95a2 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboClientHttpResponse.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboClientHttpResponse.java
@@ -29,7 +29,7 @@ import java.io.InputStream;
* Dubbo {@link ClientHttpResponse} implementation
*
* @author Mercy
- * @see DubboAdapterLoadBalancerInterceptor
+ * @see DubboTransporterInterceptor
*/
class DubboClientHttpResponse implements ClientHttpResponse {
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboMetadataInitializerInterceptor.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboMetadataInitializerInterceptor.java
new file mode 100644
index 00000000..de488e67
--- /dev/null
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboMetadataInitializerInterceptor.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.cloud.alibaba.dubbo.client.loadbalancer;
+
+import org.springframework.cloud.alibaba.dubbo.metadata.repository.DubboServiceMetadataRepository;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+
+import java.io.IOException;
+import java.net.URI;
+
+/**
+ * Dubbo Metadata {@link ClientHttpRequestInterceptor} Initializing Interceptor executes intercept before
+ * {@link DubboTransporterInterceptor}
+ *
+ * @author Mercy
+ */
+public class DubboMetadataInitializerInterceptor implements ClientHttpRequestInterceptor {
+
+ private final DubboServiceMetadataRepository repository;
+
+ public DubboMetadataInitializerInterceptor(DubboServiceMetadataRepository repository) {
+ this.repository = repository;
+ }
+
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
+
+ URI originalUri = request.getURI();
+
+ String serviceName = originalUri.getHost();
+
+ repository.initialize(serviceName);
+
+ // Execute next
+ return execution.execute(request, body);
+ }
+}
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboAdapterLoadBalancerInterceptor.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboTransporterInterceptor.java
similarity index 68%
rename from spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboAdapterLoadBalancerInterceptor.java
rename to spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboTransporterInterceptor.java
index 6e7c2c4b..d7b9bb37 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboAdapterLoadBalancerInterceptor.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/client/loadbalancer/DubboTransporterInterceptor.java
@@ -19,7 +19,7 @@ package org.springframework.cloud.alibaba.dubbo.client.loadbalancer;
import com.alibaba.dubbo.rpc.service.GenericException;
import com.alibaba.dubbo.rpc.service.GenericService;
-import org.springframework.cloud.alibaba.dubbo.http.DefaultHttpServerRequest;
+import org.springframework.cloud.alibaba.dubbo.http.MutableHttpServerRequest;
import org.springframework.cloud.alibaba.dubbo.metadata.DubboServiceMetadata;
import org.springframework.cloud.alibaba.dubbo.metadata.DubboTransportedMetadata;
import org.springframework.cloud.alibaba.dubbo.metadata.RequestMetadata;
@@ -34,26 +34,28 @@ import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.util.AntPathMatcher;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.PathMatcher;
import org.springframework.web.util.UriComponents;
import java.io.IOException;
import java.net.URI;
import java.util.List;
+import java.util.Map;
import static org.springframework.web.util.UriComponentsBuilder.fromUri;
/**
- * Dubbo {@link ClientHttpRequestInterceptor} implementation to adapt {@link LoadBalancerInterceptor}
+ * Dubbo Transporter {@link ClientHttpRequestInterceptor} implementation
*
* @author Mercy
* @see LoadBalancerInterceptor
*/
-public class DubboAdapterLoadBalancerInterceptor implements ClientHttpRequestInterceptor {
+public class DubboTransporterInterceptor implements ClientHttpRequestInterceptor {
private final DubboServiceMetadataRepository repository;
- private final LoadBalancerInterceptor loadBalancerInterceptor;
-
private final DubboClientHttpResponseFactory clientHttpResponseFactory;
private final DubboTransportedMetadata dubboTransportedMetadata;
@@ -62,15 +64,15 @@ public class DubboAdapterLoadBalancerInterceptor implements ClientHttpRequestInt
private final DubboGenericServiceExecutionContextFactory contextFactory;
- public DubboAdapterLoadBalancerInterceptor(DubboServiceMetadataRepository dubboServiceMetadataRepository,
- LoadBalancerInterceptor loadBalancerInterceptor,
- List> messageConverters,
- ClassLoader classLoader,
- DubboTransportedMetadata dubboTransportedMetadata,
- DubboGenericServiceFactory serviceFactory,
- DubboGenericServiceExecutionContextFactory contextFactory) {
+ private final PathMatcher pathMatcher = new AntPathMatcher();
+
+ public DubboTransporterInterceptor(DubboServiceMetadataRepository dubboServiceMetadataRepository,
+ List> messageConverters,
+ ClassLoader classLoader,
+ DubboTransportedMetadata dubboTransportedMetadata,
+ DubboGenericServiceFactory serviceFactory,
+ DubboGenericServiceExecutionContextFactory contextFactory) {
this.repository = dubboServiceMetadataRepository;
- this.loadBalancerInterceptor = loadBalancerInterceptor;
this.dubboTransportedMetadata = dubboTransportedMetadata;
this.clientHttpResponseFactory = new DubboClientHttpResponseFactory(messageConverters, classLoader);
this.serviceFactory = serviceFactory;
@@ -84,22 +86,24 @@ public class DubboAdapterLoadBalancerInterceptor implements ClientHttpRequestInt
String serviceName = originalUri.getHost();
- repository.initialize(serviceName);
-
RequestMetadata clientMetadata = buildRequestMetadata(request);
DubboServiceMetadata dubboServiceMetadata = repository.get(serviceName, clientMetadata);
- if (dubboServiceMetadata == null) { // if DubboServiceMetadata is not found
- return loadBalancerInterceptor.intercept(request, body, execution);
+ if (dubboServiceMetadata == null) {
+ // if DubboServiceMetadata is not found, executes next
+ return execution.execute(request, body);
}
RestMethodMetadata dubboRestMethodMetadata = dubboServiceMetadata.getRestMethodMetadata();
GenericService genericService = serviceFactory.create(dubboServiceMetadata, dubboTransportedMetadata);
- DubboGenericServiceExecutionContext context = contextFactory.create(dubboRestMethodMetadata,
- new DefaultHttpServerRequest(request, body));
+ MutableHttpServerRequest httpServerRequest = new MutableHttpServerRequest(request, body);
+
+ customizeRequest(httpServerRequest, dubboRestMethodMetadata, clientMetadata);
+
+ DubboGenericServiceExecutionContext context = contextFactory.create(dubboRestMethodMetadata, httpServerRequest);
Object result = null;
GenericException exception = null;
@@ -113,7 +117,22 @@ public class DubboAdapterLoadBalancerInterceptor implements ClientHttpRequestInt
return clientHttpResponseFactory.build(result, exception, clientMetadata, dubboRestMethodMetadata);
}
- public static RequestMetadata buildRequestMetadata(HttpRequest request) {
+ protected void customizeRequest(MutableHttpServerRequest httpServerRequest,
+ RestMethodMetadata dubboRestMethodMetadata, RequestMetadata clientMetadata) {
+
+ RequestMetadata dubboRequestMetadata = dubboRestMethodMetadata.getRequest();
+ String pathPattern = dubboRequestMetadata.getPath();
+
+ Map pathVariables = pathMatcher.extractUriTemplateVariables(pathPattern, httpServerRequest.getPath());
+
+ if (!CollectionUtils.isEmpty(pathVariables)) {
+ // Put path variables Map into query parameters Map
+ httpServerRequest.params(pathVariables);
+ }
+
+ }
+
+ private RequestMetadata buildRequestMetadata(HttpRequest request) {
UriComponents uriComponents = fromUri(request.getURI()).build(true);
RequestMetadata requestMetadata = new RequestMetadata();
requestMetadata.setPath(uriComponents.getPath());
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/HttpServerRequest.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/HttpServerRequest.java
index 7bb6dbff..f56a3f93 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/HttpServerRequest.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/HttpServerRequest.java
@@ -16,7 +16,6 @@
*/
package org.springframework.cloud.alibaba.dubbo.http;
-import org.springframework.http.HttpCookie;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpRequest;
import org.springframework.util.MultiValueMap;
@@ -36,13 +35,8 @@ public interface HttpServerRequest extends HttpRequest, HttpInputMessage {
String getPath();
/**
- * Return a read-only map with parsed and decoded query parameter values.
+ * Return a map with parsed and decoded query parameter values.
*/
MultiValueMap getQueryParams();
- /**
- * Return a read-only map of cookies sent by the client.
- */
- MultiValueMap getCookies();
-
}
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/DefaultHttpServerRequest.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/MutableHttpServerRequest.java
similarity index 86%
rename from spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/DefaultHttpServerRequest.java
rename to spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/MutableHttpServerRequest.java
index 69db5848..eab82ea9 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/DefaultHttpServerRequest.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/MutableHttpServerRequest.java
@@ -26,17 +26,17 @@ import org.springframework.util.MultiValueMap;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
+import java.util.Map;
import static org.springframework.cloud.alibaba.dubbo.http.util.HttpUtils.getParameters;
import static org.springframework.cloud.alibaba.dubbo.http.util.HttpUtils.parseCookies;
-import static org.springframework.http.HttpHeaders.readOnlyHttpHeaders;
/**
- * Default {@link HttpServerRequest} implementation
+ * Mutable {@link HttpServerRequest} implementation
*
* @author Mercy
*/
-public class DefaultHttpServerRequest implements HttpServerRequest {
+public class MutableHttpServerRequest implements HttpServerRequest {
private final HttpMethod httpMethod;
@@ -52,16 +52,21 @@ public class DefaultHttpServerRequest implements HttpServerRequest {
private final HttpInputMessage httpInputMessage;
- public DefaultHttpServerRequest(HttpRequest httpRequest, byte[] body) {
+ public MutableHttpServerRequest(HttpRequest httpRequest, byte[] body) {
this.httpMethod = httpRequest.getMethod();
this.uri = httpRequest.getURI();
this.path = uri.getPath();
- this.httpHeaders = readOnlyHttpHeaders(httpRequest.getHeaders());
+ this.httpHeaders = new HttpHeaders(httpRequest.getHeaders());
this.queryParams = getParameters(httpRequest);
this.httpInputMessage = new ByteArrayHttpInputMessage(body);
this.cookies = parseCookies(httpHeaders);
}
+ public MutableHttpServerRequest params(Map params) {
+ queryParams.setAll(params);
+ return this;
+ }
+
@Override
public InputStream getBody() throws IOException {
return httpInputMessage.getBody();
@@ -96,9 +101,4 @@ public class DefaultHttpServerRequest implements HttpServerRequest {
public MultiValueMap getQueryParams() {
return queryParams;
}
-
- @Override
- public MultiValueMap getCookies() {
- return cookies;
- }
}
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/util/HttpUtils.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/util/HttpUtils.java
index a48e130c..c1b43b6a 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/util/HttpUtils.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/http/util/HttpUtils.java
@@ -34,7 +34,6 @@ import java.util.Map;
import java.util.Set;
import static org.springframework.http.HttpHeaders.COOKIE;
-import static org.springframework.util.CollectionUtils.unmodifiableMultiValueMap;
import static org.springframework.util.StringUtils.delimitedListToStringArray;
import static org.springframework.util.StringUtils.hasText;
import static org.springframework.util.StringUtils.trimAllWhitespace;
@@ -125,7 +124,7 @@ public abstract class HttpUtils {
addParam(parameters, name, value);
}
}
- return unmodifiableMultiValueMap(parameters);
+ return parameters;
}
/**
@@ -161,7 +160,7 @@ public abstract class HttpUtils {
cookies.add(name, httpCookie);
}
- return unmodifiableMultiValueMap(cookies);
+ return cookies;
}
/**
diff --git a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/metadata/repository/DubboServiceMetadataRepository.java b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/metadata/repository/DubboServiceMetadataRepository.java
index 30345161..a8b0054b 100644
--- a/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/metadata/repository/DubboServiceMetadataRepository.java
+++ b/spring-cloud-alibaba-dubbo/src/main/java/org/springframework/cloud/alibaba/dubbo/metadata/repository/DubboServiceMetadataRepository.java
@@ -114,15 +114,15 @@ public class DubboServiceMetadataRepository {
object = map.get(matcher);
if (object == null) { // Can't match exactly
// Require to match one by one
+ HttpRequest request = builder()
+ .method(requestMetadata.getMethod())
+ .path(requestMetadata.getPath())
+ .params(requestMetadata.getParams())
+ .headers(requestMetadata.getHeaders())
+ .build();
+
for (Map.Entry entry : map.entrySet()) {
RequestMetadataMatcher possibleMatcher = entry.getKey();
- HttpRequest request = builder()
- .method(requestMetadata.getMethod())
- .path(requestMetadata.getPath())
- .params(requestMetadata.getParams())
- .headers(requestMetadata.getHeaders())
- .build();
-
if (possibleMatcher.match(request)) {
object = entry.getValue();
break;
diff --git a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudBootstrap.java b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudBootstrap.java
index 25845681..48566585 100644
--- a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudBootstrap.java
+++ b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudBootstrap.java
@@ -31,7 +31,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Lazy;
-import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@@ -153,6 +152,9 @@ public class DubboSpringCloudBootstrap {
System.out.println(dubboFeignRestService.pathVariables("c", "b", "a"));
// Spring Cloud Open Feign REST Call
System.out.println(feignRestService.pathVariables("b", "a", "c"));
+
+ // RestTemplate call
+ System.out.println(restTemplate.getForEntity("http://spring-cloud-alibaba-dubbo//path-variables/{p1}/{p2}?v=c", String.class, "a", "b"));
}
private void callHeaders() {
@@ -180,6 +182,9 @@ public class DubboSpringCloudBootstrap {
System.out.println(dubboFeignRestService.params("1", 1));
// Spring Cloud Open Feign REST Call
System.out.println(feignRestService.params("1", 1));
+
+ // RestTemplate call
+ System.out.println(restTemplate.getForEntity("http://spring-cloud-alibaba-dubbo/param?param=小马哥", String.class));
}
private void callRequestBodyMap() {
@@ -190,35 +195,16 @@ public class DubboSpringCloudBootstrap {
data.put("age", 33);
// Dubbo Service call
- System.out.println(restService.requestBody(data, "Hello,World"));
+ System.out.println(restService.requestBodyMap(data, "Hello,World"));
// Spring Cloud Open Feign REST Call (Dubbo Transported)
- System.out.println(dubboFeignRestService.requestBody("Hello,World", data));
- // Spring Cloud Open Feign REST Call
+// System.out.println(dubboFeignRestService.requestBody("Hello,World", data));
+// Spring Cloud Open Feign REST Call
System.out.println(feignRestService.requestBody("Hello,World", data));
+
+ // RestTemplate call
+ System.out.println(restTemplate.postForObject("http://spring-cloud-alibaba-dubbo/request/body/map?param=小马哥", data, User.class));
}
-
- @Bean
- public ApplicationRunner restTemplateRunner() {
- return arguments -> {
-
- ResponseEntity entity = restTemplate.getForEntity("http://spring-cloud-alibaba-dubbo/param?param=小马哥", String.class);
- System.out.println(entity);
-
- Map data = new HashMap<>();
- data.put("id", 1);
- data.put("name", "小马哥");
- data.put("age", 33);
- User user = restTemplate.postForObject("http://spring-cloud-alibaba-dubbo/request/body/map", data, User.class);
-
- System.out.println(restTemplate.postForObject("http://spring-cloud-alibaba-dubbo/request/body/map", data, String.class));
-
- Map map = restTemplate.postForObject("http://spring-cloud-alibaba-dubbo/request/body/user", user, Map.class);
- System.out.println(map);
- };
- }
-
-
@Bean
@LoadBalanced
@DubboTransported
diff --git a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/RestService.java b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/RestService.java
index 396372e1..35d6755d 100644
--- a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/RestService.java
+++ b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/RestService.java
@@ -35,8 +35,8 @@ public interface RestService {
String form(String form);
- User requestBody(Map data, String param);
+ User requestBodyMap(Map data, String param);
- Map requestBody(User user);
+ Map requestBodyUser(User user);
}
diff --git a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/StandardRestService.java b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/StandardRestService.java
index 3ac3ca39..0c512f66 100644
--- a/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/StandardRestService.java
+++ b/spring-cloud-alibaba-dubbo/src/test/java/org/springframework/cloud/alibaba/dubbo/service/StandardRestService.java
@@ -110,10 +110,10 @@ public class StandardRestService implements RestService {
@Override
@PostMapping(value = "/request/body/map", produces = APPLICATION_JSON_UTF8_VALUE)
- @Path("/request/setBody/map")
+ @Path("/request/body/map")
@POST
@Produces(APPLICATION_JSON_VALUE)
- public User requestBody(@RequestBody Map data, @RequestParam("param") @QueryParam("param") String param) {
+ public User requestBodyMap(@RequestBody Map data, @RequestParam("param") @QueryParam("param") String param) {
User user = new User();
user.setId(((Integer) data.get("id")).longValue());
user.setName((String) data.get("name"));
@@ -123,11 +123,11 @@ public class StandardRestService implements RestService {
}
@PostMapping(value = "/request/body/user", consumes = APPLICATION_JSON_UTF8_VALUE)
- @Path("/request/setBody/user")
+ @Path("/request/body/user")
@POST
@Override
@Consumes(APPLICATION_JSON_UTF8_VALUE)
- public Map requestBody(@RequestBody User user) {
+ public Map requestBodyUser(@RequestBody User user) {
Map map = new HashMap<>();
map.put("id", user.getId());
map.put("name", user.getName());