diff --git a/usergw-service/src/main/java/META-INF/additional-spring-configuration-metadata.json b/usergw-service/src/main/java/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..cada07b --- /dev/null +++ b/usergw-service/src/main/java/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,5 @@ +{"properties": [{ + "name": "yame.config", + "type": "java.lang.String", + "description": "用于配置网关的路径, 如果不填默认 gateway.yml, gateway.yaml, Gateway.yml, Gateway.yaml" +}]} \ No newline at end of file diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/App.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/App.java index 963e7a8..faf39c3 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/App.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/App.java @@ -1,7 +1,5 @@ package cn.ecpark.service.usergw; -import java.net.URI; - import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java index c512bd1..4166f1a 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java @@ -22,8 +22,9 @@ public class VerifyFilter implements GlobalFilter { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - - if(true) return chain.filter(exchange); + + if (true) + return chain.filter(exchange); ServerHttpRequest request = exchange.getRequest(); HttpHeaders header = request.getHeaders(); @@ -61,8 +62,4 @@ public class VerifyFilter implements GlobalFilter { return false; } - - - - } \ No newline at end of file diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/bean/GenericServicePool.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/bean/GenericServicePool.java index 8d990ee..99154e0 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/bean/GenericServicePool.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/bean/GenericServicePool.java @@ -4,8 +4,6 @@ import java.util.HashMap; import org.apache.dubbo.rpc.service.GenericService; -import lombok.extern.slf4j.Slf4j; - /** * GenericServicePool */ diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java index 929fbad..d72849c 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java @@ -3,6 +3,7 @@ package cn.ecpark.service.usergw.biz.filters.factory; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import com.alibaba.fastjson.JSON; @@ -34,6 +35,8 @@ public class DubboGatewayFilterFactory extends AbstractGatewayFilterFactory> mehtods = new HashMap<>(); + private List emptyList = new LinkedList(); + public DubboGatewayFilterFactory() { super(Config.class); } @@ -57,52 +60,63 @@ public class DubboGatewayFilterFactory extends AbstractGatewayFilterFactory paramTypes; - //判断全部函数允许, 必须带参数类型, 而且要匹配, 否则报错 - if(uri.charAt(5) == '-') { + // 判断全部函数允许, 必须带参数类型, 而且要匹配, 否则报错 + if (uri.charAt(5) == '-') { paramTypes = headers.get("param-types"); + if(paramTypes == null) { + paramTypes = this.emptyList; + } } else { paramTypes = mehtods.get(methodString.get(0)); } - if(paramTypes != null) { + if (paramTypes != null) { int paramsSize = 0; - if(params != null) { + if (params != null) { paramsSize = params.size(); } - if(paramTypes.size() == paramsSize) { + if (paramTypes.size() == paramsSize) { GenericServicePool gsPool = appContext.getBean(GenericServicePool.class); GenericService gs = gsPool.get(uri); - if(paramsSize == 0) { - result = gs.$invoke(methodString.get(0), new String[]{}, new Object[]{}); + if (paramsSize == 0) { + result = gs.$invoke(methodString.get(0), new String[] {}, new Object[] {}); } else { - result = gs.$invoke(methodString.get(0), Arrays.copyOf(paramTypes.toArray(), paramTypes.size(), String[].class), params.toArray()); + result = gs.$invoke(methodString.get(0), + Arrays.copyOf(paramTypes.toArray(), paramTypes.size(), String[].class), + params.toArray()); } - if(result == null) { + if (result == null) { return response.setComplete(); } - }else { - result = String.format("paramTypes.size %d is not equals to params size %d", - paramTypes.size(),paramsSize); - log.warn((String)result); - } + } else { + result = String.format("paramTypes.size %d is not equals to params size %d", paramTypes.size(), + paramsSize); + log.warn((String) result); + } } else { - result = String.format("mehtod: %s, param-types: null is not exist or not allowed", methodString.get(0)); - log.warn((String)result); + result = String.format("(mehtod: %s, param-types: null) is not exist or method is not allowed", + methodString.get(0)); + log.warn((String) result); } } else { result = String.format("queryParams.get(\"method\") is null"); - log.warn((String)result); + log.warn((String) result); } if (result != null) { - return response.writeWith(Mono - .just(response.bufferFactory().wrap(ByteBuffer.wrap(JSON.toJSONString(result).getBytes())))); - } + if (result.getClass() == String.class) { + return response.writeWith( + Mono.just(response.bufferFactory().wrap(ByteBuffer.wrap(((String) result).getBytes())))); + } else { + return response.writeWith(Mono.just( + response.bufferFactory().wrap(ByteBuffer.wrap(JSON.toJSONString(result).getBytes())))); + } + } return chain.filter(exchange); }; diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java index 6d3b25a..aee5ec4 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java @@ -1,17 +1,6 @@ package cn.ecpark.service.usergw.biz.routes; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.BodyInserters; -import org.springframework.web.reactive.function.server.RequestPredicates; -import org.springframework.web.reactive.function.server.RouterFunction; -import org.springframework.web.reactive.function.server.RouterFunctions; -import org.springframework.web.reactive.function.server.ServerResponse; - /** * Route */ diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java index 7acd36b..db706d3 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java @@ -1,7 +1,6 @@ package cn.ecpark.service.usergw.config; import java.io.InputStream; -import java.lang.reflect.Method; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; @@ -16,6 +15,7 @@ import java.util.function.BiConsumer; import org.apache.dubbo.config.ReferenceConfig; import org.apache.dubbo.rpc.service.GenericService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.gateway.filter.FilterDefinition; import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition; import org.springframework.cloud.gateway.route.RouteDefinition; @@ -26,8 +26,6 @@ import org.springframework.stereotype.Component; import org.yaml.snakeyaml.Yaml; import cn.ecpark.service.usergw.biz.filters.bean.GenericServicePool; -import cn.ecpark.service.usergw.biz.filters.factory.DubboGatewayFilterFactory; -import cn.ecpark.service.usergw.utils.Convert; import cn.ecpark.service.usergw.utils.Extract; import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Flux; @@ -41,6 +39,9 @@ public class ConfigGateway implements RouteDefinitionLocator { // List mediaTypes = new ArrayList<>(); + @Value("${yame.config}") + private String yameConfigPath; + List defaultFilters = new ArrayList<>(); HashMap, Object>> specialField = new HashMap, Object>>(); Set ignoreKey = new HashSet<>(); @@ -63,8 +64,14 @@ public class ConfigGateway implements RouteDefinitionLocator { // WebFluxConfigurationSupport a; defaultFilters.clear(); Object inputStream = null; - String[] gatewayConfigPathList = { "gateway.yml", "gateway.yaml", "Gateway.yml", "Gateway.yaml" }; + String[] gatewayConfigPathList; + if (yameConfigPath == null) { + gatewayConfigPathList = new String[] { "gateway.yml", "gateway.yaml", "Gateway.yml", "Gateway.yaml" }; + } else { + gatewayConfigPathList = new String[] { yameConfigPath }; + } for (String gatewayConfigPath : gatewayConfigPathList) { + gatewayConfigPath = gatewayConfigPath.trim(); inputStream = this.getClass().getClassLoader().getResourceAsStream(gatewayConfigPath); if (inputStream != null) { break; @@ -99,8 +106,6 @@ public class ConfigGateway implements RouteDefinitionLocator { return Flux.empty(); } - - @SuppressWarnings("unchecked") private void configDefault(List routeList, Map defaultYaml) { if (defaultYaml != null) { @@ -238,14 +243,14 @@ public class ConfigGateway implements RouteDefinitionLocator { } iter.remove("order"); - ReferenceConfig reference = new ReferenceConfig(); reference.setConnections(3); String UriString = "dubbo://"; + // TODO: 以后可以完善dubbo-{flag}形式的判断 Object methods = iter.get("methods"); - if(methods == null || ((List)methods).size() == 0) { + if (methods == null || ((List) methods).size() == 0) { UriString = "dubbo-allowed://"; } else { UriString = "dubbo://"; @@ -285,8 +290,6 @@ public class ConfigGateway implements RouteDefinitionLocator { } } - - UriString += Extract.getReferenceConfigKey(reference); GenericServicePool gsPool = appContext.getBean(GenericServicePool.class); reference.setGeneric(true); @@ -323,7 +326,7 @@ public class ConfigGateway implements RouteDefinitionLocator { List filtersYaml = iter.get(yamlField); filters.addAll(defaultFilters); - + if (filtersYaml != null) { for (String filterString : filtersYaml) { FilterDefinition fd = new FilterDefinition(filterString); @@ -333,7 +336,7 @@ public class ConfigGateway implements RouteDefinitionLocator { } } } - + filters.add(new FilterDefinition("Dubbo=" + dubboUri)); } } \ No newline at end of file diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java index 18f8b25..e94aa5a 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java @@ -1,23 +1,15 @@ package cn.ecpark.service.usergw.config; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.function.BiConsumer; -import java.util.function.Function; - -import javax.el.MethodNotFoundException; import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.ReferenceConfig; import org.apache.dubbo.config.RegistryConfig; import org.apache.dubbo.rpc.service.GenericService; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import cn.ecpark.service.usergw.biz.filters.bean.GenericServicePool; import cn.ecpark.service.usergw.biz.filters.factory.DubboGatewayFilterFactory; import cn.ecpark.service.usergw.utils.Convert; import lombok.extern.slf4j.Slf4j; @@ -28,37 +20,37 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class ConfigSpecialFunction { - public static void setDefault(ReferenceConfig ref, String methodName, Object cfgValue) throws Exception { + public static void setDefault(ReferenceConfig ref, String methodName, Object cfgValue) + throws Exception { methodName = "set" + Convert.firstUpperCase(methodName); - log.info("method:{}, value:{}",methodName,cfgValue); + log.info("method:{}, value:{}", methodName, cfgValue); Method method = ref.getClass().getMethod(methodName, cfgValue.getClass()); method.invoke(ref, cfgValue); } public static void setApplication(ReferenceConfig ref, Object cfgValue) { - ref.setApplication(new ApplicationConfig((String)cfgValue)); + ref.setApplication(new ApplicationConfig((String) cfgValue)); } public static void setRegistry(ReferenceConfig ref, Object cfgValue) { - ref.setRegistry(new RegistryConfig((String)cfgValue)); + ref.setRegistry(new RegistryConfig((String) cfgValue)); } @SuppressWarnings("unchecked") public static void setMethods(ReferenceConfig ref, Object cfgValue) { List> cfgs = (List>) cfgValue; - for(HashMap cfg: cfgs) { - String name = (String)cfg.get("name"); - if(DubboGatewayFilterFactory.mehtods.containsKey(name)) { + for (HashMap cfg : cfgs) { + String name = (String) cfg.get("name"); + if (DubboGatewayFilterFactory.mehtods.containsKey(name)) { log.warn("method {} is duplicate", name); } - List params = (List)cfg.get("param-types"); - if(params == null) { - params = new LinkedList<>(); // 不用ArrayList 减少内存的使用. + List params = (List) cfg.get("param-types"); + if (params == null) { + params = new LinkedList<>(); // 不用ArrayList 减少内存的使用. } DubboGatewayFilterFactory.mehtods.put(name, params); } } - } \ No newline at end of file diff --git a/usergw-service/src/main/resources/application.properties b/usergw-service/src/main/resources/application.properties index 71b9ee3..4afec56 100644 --- a/usergw-service/src/main/resources/application.properties +++ b/usergw-service/src/main/resources/application.properties @@ -11,3 +11,5 @@ server.port=8888 # logging.level.org.springframework.cloud.gateway=debug logging.file=logs/log +yame.config=gateway.yaml + diff --git a/usergw-service/src/main/resources/gateway.yaml b/usergw-service/src/main/resources/gateway.yaml index 26a41fa..d5202b9 100644 --- a/usergw-service/src/main/resources/gateway.yaml +++ b/usergw-service/src/main/resources/gateway.yaml @@ -33,12 +33,12 @@ dubbo: - id: test order: 0 application: dubbo-exchange - # methods: # 如果没填就从 request拿 意味着所有接口都可以使用 + methods: # 如果没填就从 request拿 意味着所有接口都可以使用 - # - name: Say - # param-types: - # - java.lang.String - # - name: Hello + - name: Say + param-types: + - java.lang.String + - name: Hello connections: 4 group: test diff --git a/usergw-service/src/main/resources/test-gateway.yaml b/usergw-service/src/main/resources/test-gateway.yaml new file mode 100644 index 0000000..a09c78c --- /dev/null +++ b/usergw-service/src/main/resources/test-gateway.yaml @@ -0,0 +1,50 @@ +restful: + default-filters: + - AddResponseHeader=X-Response-Default-Foo, Test-Default-Bar + routes: + - id: path_route + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route12; + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route13 + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + # - id: redirect_to + # uri: http://localhost/test/** + # order: 11 + # filters: + # - RedirectTo=302, http://httpbin.org:80/get + +dubbo: + routes: + - id: test + order: 0 + application: dubbo-exchange + # methods: # 如果没填就从 request拿 意味着所有接口都可以使用 + + # - name: Say + # param-types: + # - java.lang.String + # - name: Hello + + connections: 4 + group: test + # registry: zookeeper://127.0.0.1:2181 + interface: ocean.demo.api.IExchange + version: 1.0.0 + predicates: + - Path=/dubbo/hello + \ No newline at end of file diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestExtract.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestExtract.java index d2a2218..60f7b2e 100644 --- a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestExtract.java +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestExtract.java @@ -1,20 +1,10 @@ package cn.ecpark.service.usergw.utils; -import java.net.URI; -import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.assertj.core.util.Arrays; import org.junit.Assert; import org.junit.Test; import org.springframework.boot.test.context.TestComponent; import cn.ecpark.service.usergw.utils.Extract.GenericServiceBase; -import io.netty.handler.codec.http.HttpUtil; -import io.netty.handler.codec.http.QueryStringDecoder; @TestComponent public class TestExtract { diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java new file mode 100644 index 0000000..54f902d --- /dev/null +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java @@ -0,0 +1,88 @@ +package cn.ecpark.service.usergw.utils; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import cn.ecpark.service.usergw.App; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.client.HttpClient.ResponseReceiver; +import reactor.netty.http.client.HttpClientResponse; + + + + +@SpringBootTest(classes= App.class, webEnvironment = WebEnvironment.RANDOM_PORT) +@RunWith(SpringRunner.class) +@TestPropertySource(locations = {"application.properties"}) + +public class TestHttp2DubboConfig { + + @LocalServerPort + private int serverPort; + + @Test + public void TestRequestHttp2DubboWithoutConfigMethod() { + + // Test Base Url + HttpClient client = HttpClient.create(); + ResponseReceiver receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello").headers( + h -> h.set("method", "Say").add("param-types", "java.lang.String").add("params", "Test-MyHttp2dubbo")) + .get(); + + HttpClientResponse resp = receiver.response().block(); + Assert.assertNotNull(resp); + String v = resp.responseHeaders().get("X-Response-Default-Foo"); + Assert.assertNotNull(v); + Assert.assertEquals(v, "Test-Default-Bar"); + + String content = receiver.responseContent().asString().blockLast(); + Assert.assertNotNull(content); + Assert.assertEquals(content, "Test-MyHttp2dubbo"); + + receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello").headers( + h -> h.set("method", "Hello")) + .get(); + resp = receiver.response().block(); + Assert.assertNotNull(resp); + content = receiver.responseContent().asString().blockLast(); + Assert.assertNotNull(content); + Assert.assertEquals(content, "Hello Dubbo"); + + } + + @Test + public void TestJSONReturnWithoutConfigMethod() { + // Test Base Url + HttpClient client = HttpClient.create(); + ResponseReceiver receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello").headers( + h -> h.set("method", "Say").add("param-types", "java.lang.String").add("params","{\"a\": 1, \"b\":\"123\"}")) + .get(); + + HttpClientResponse resp = receiver.response().block(); + Assert.assertNotNull(resp); + String v = resp.responseHeaders().get("X-Response-Default-Foo"); + Assert.assertNotNull(v); + Assert.assertEquals(v, "Test-Default-Bar"); + + String content = receiver.responseContent().asString().blockLast(); + Assert.assertNotNull(content); + Assert.assertEquals(content, "{\"a\": 1, \"b\":\"123\"}"); + + + receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello").headers( + h -> h.set("method", "Say").add("param-types", "java.lang.String").add("params","123")) + .get(); + resp = receiver.response().block(); + Assert.assertNotNull(resp); + content = receiver.responseContent().asString().blockLast(); + Assert.assertNotNull(content); + Assert.assertEquals(content, "123"); + } + +} \ No newline at end of file diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application.properties b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application.properties new file mode 100644 index 0000000..31e134b --- /dev/null +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application.properties @@ -0,0 +1,15 @@ + +spring.application.name=gateway +dubbo.scan.base-packages=cn.ecpark.service.usergw.impl +dubbo.protocol.name=dubbo +dubbo.protocol.port=20999 +dubbo.registry.address=zookeeper://127.0.0.1:2181 +dubbo.config-center.address=zookeeper://127.0.0.1:2181 +dubbo.metadata-report.address=zookeeper://127.0.0.1:2181 +server.port=8888 + +# logging.level.org.springframework.cloud.gateway=debug +logging.file=logs/log + +yame.config=test-gateway.yaml + diff --git a/usergw-service/src/test/java/resources/gateway.yaml b/usergw-service/src/test/java/resources/gateway.yaml new file mode 100644 index 0000000..a09c78c --- /dev/null +++ b/usergw-service/src/test/java/resources/gateway.yaml @@ -0,0 +1,50 @@ +restful: + default-filters: + - AddResponseHeader=X-Response-Default-Foo, Test-Default-Bar + routes: + - id: path_route + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route12; + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route13 + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + # - id: redirect_to + # uri: http://localhost/test/** + # order: 11 + # filters: + # - RedirectTo=302, http://httpbin.org:80/get + +dubbo: + routes: + - id: test + order: 0 + application: dubbo-exchange + # methods: # 如果没填就从 request拿 意味着所有接口都可以使用 + + # - name: Say + # param-types: + # - java.lang.String + # - name: Hello + + connections: 4 + group: test + # registry: zookeeper://127.0.0.1:2181 + interface: ocean.demo.api.IExchange + version: 1.0.0 + predicates: + - Path=/dubbo/hello + \ No newline at end of file diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/test-gateway.yaml b/usergw-service/src/test/java/resources/test-gateway.yaml similarity index 94% rename from usergw-service/src/test/java/cn/ecpark/service/usergw/utils/test-gateway.yaml rename to usergw-service/src/test/java/resources/test-gateway.yaml index d5202b9..5549add 100644 --- a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/test-gateway.yaml +++ b/usergw-service/src/test/java/resources/test-gateway.yaml @@ -1,6 +1,6 @@ restful: default-filters: - - AddResponseHeader=X-Response-Default-Foo, Default-Bar + - AddResponseHeader=X-Response-Default-Foo, Test-Default-Bar routes: - id: path_route uri: http://httpbin.org:80/* @@ -34,7 +34,6 @@ dubbo: order: 0 application: dubbo-exchange methods: # 如果没填就从 request拿 意味着所有接口都可以使用 - - name: Say param-types: - java.lang.String