spring-cloud-gateway RewritePath GatewayFilter 不工作
spring-cloud-gateway RewritePath GatewayFilter not working
我正在开发一个 spring-云网关应用程序。我在哪里使用 RewritePath GatewayFilter 来处理一些 pathvariable
。以下是我在 端口 80 上的下游 api 运行。
@GetMapping("/appname/event/{eventId}")
public Mono<ResponseEntity> getEventTimeOutWithPathVariable(
@RequestHeader(name = "customerId") UUID customerId,
@PathVariable(name = "eventId") String eventId) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("customerId", customerId);
map.put("eventId", eventId);
return Mono.just(new ResponseEntity(map, HttpStatus.OK));
}
在我的网关应用程序中,过滤器配置如下:
- id: api_timeout_route
uri: http://localhost/appname/event/
predicates:
- Path=/withapitimeout/**
filters:
- Hystrix=apiTimeOut
- RewritePath=/withapitimeout/(?<segment>.*), /$\{segment}
但它不起作用。我做错了什么?我收到以下日志。
Mapping [Exchange: GET http://localhost:8000/withapitimeout/306ac5d0-b6d8-4f78-bde8-c470478ed1b1]
to Route{id='api_timeout_route', uri=http://localhost:80/appname/event/
主要是路径变量没有被重写。有帮助吗?
我不是专家,但您可以尝试这样的操作:
- id: api_timeout_route
uri: http://localhost
predicates:
- Path=/withapitimeout/**
filters:
- Hystrix=apiTimeOut
- RewritePath=/withapitimeout/(?<segment>.*), /appname/event/$\{segment}
让我知道 ;)
我正在开发一个 spring-云网关应用程序。我在哪里使用 RewritePath GatewayFilter 来处理一些 pathvariable
。以下是我在 端口 80 上的下游 api 运行。
@GetMapping("/appname/event/{eventId}")
public Mono<ResponseEntity> getEventTimeOutWithPathVariable(
@RequestHeader(name = "customerId") UUID customerId,
@PathVariable(name = "eventId") String eventId) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("customerId", customerId);
map.put("eventId", eventId);
return Mono.just(new ResponseEntity(map, HttpStatus.OK));
}
在我的网关应用程序中,过滤器配置如下:
- id: api_timeout_route
uri: http://localhost/appname/event/
predicates:
- Path=/withapitimeout/**
filters:
- Hystrix=apiTimeOut
- RewritePath=/withapitimeout/(?<segment>.*), /$\{segment}
但它不起作用。我做错了什么?我收到以下日志。
Mapping [Exchange: GET http://localhost:8000/withapitimeout/306ac5d0-b6d8-4f78-bde8-c470478ed1b1]
to Route{id='api_timeout_route', uri=http://localhost:80/appname/event/
主要是路径变量没有被重写。有帮助吗?
我不是专家,但您可以尝试这样的操作:
- id: api_timeout_route
uri: http://localhost
predicates:
- Path=/withapitimeout/**
filters:
- Hystrix=apiTimeOut
- RewritePath=/withapitimeout/(?<segment>.*), /appname/event/$\{segment}
让我知道 ;)