在使用Spring Cloud Gateway的時候,路由信息是根據DiscoveryClient自動生成的,如今要給自動生成的路由信息統一添加Predicate和Filter。配置以下所示: application.yml
java
spring: cloud: gateway: discovery: locator: enabled: true predicates: - name: Path args: pattern: "'/'+serviceId+'/test'" filters: - name: RedirectTo args: status: 301 url: http://www.xinyues.com
這個時候,網關服務啓動是沒有問題的,可是在瀏覽器中輸入獲取全部路由信息時,報下面的異常:react
2019-10-26 16:40:40 ERROR org.springframework.core.log.CompositeLog.error(CompositeLog.java:117) - [d04837fc] 500 Server Error for HTTP GET "/actuator/gateway/routes" org.springframework.expression.sp el.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'colon(:)' at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:135) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:61) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:33) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:52) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:43) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.getValueFromExpr(DiscoveryClientRouteDefinitionLocator.java:129) ~[spring-cloud-gateway-core-2.1.0.RELEASE.jar:2.1 .0.RELEASE] at org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.lambda$getRouteDefinitions$4(DiscoveryClientRouteDefinitionLocator.java:117) ~[spring-cloud-gateway-core-2.1.0.REL EASE.jar:2.1.0.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:107) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.tryOnNext(FluxFilterFuseable.java:143) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.tryOnNext(FluxMapFuseable.java:303) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.tryOnNext(FluxFilterFuseable.java:361) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.tryOnNext(FluxMapFuseable.java:303) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscriptionConditional.slowPath(FluxIterable.java:515) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscriptionConditional.request(FluxIterable.java:473) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.request(FluxMapFuseable.java:346) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:404) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.request(FluxMapFuseable.java:346) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.request(FluxFilterFuseable.java:185) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:933) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onSubscribe(FluxFilterFuseable.java:82) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onSubscribe(FluxMapFuseable.java:255) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onSubscribe(FluxFilterFuseable.java:299) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onSubscribe(FluxMapFuseable.java:255) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:135) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
歐萊雅男士銳能抗初老護膚套裝(元氣露+多效霜+眼霜+潔面膏50ml2+面膜10) 視黃醇緊緻 洗面奶男spring
根據異常信息,能夠定位到是url: http://www.xinyues.com
配置錯誤。由於這裏配置的信息是須要Spel解析的,若是像上面那樣直接配置,會按照Spel語法解析,咱們須要的是一個純字符串值,應該這樣配置:url: "'http://www.xinyues.com'"
express