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());