Я пытаюсь реализовать маршрут таким образом, чтобы, если первая маршрутизация прошла успешно (HTTP-200), я хотел бы отправить событие с полем из тела:
public RouteLocator customRouteLocator (RouteLocatorBuilder builder){
return builder.routes()
.route("myRoute", r -> r.path("/cars")
.and()
.method(HttpMethod.PUT)
.filters(f -> f.prefixPath("/dealer"))
.uri("http://httpbin.com")
.filter(new GatewayFilter() {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
HttpStatus statusCode = response.getStatusCode();
//how can I make sure statusCode is not null?
if (!statusCode.is2xxSuccessful()) {
return chain.filter(exchange);
}
Flux<DataBuffer> requestBody = request.getBody();
//Deserialize requestBody to a custom object
String field = "???requestBody.???";//How to get this?
try {
sendMessage(field);
} catch (Throwable ignore) {
}
return chain.filter(exchange);
}
})
)
.build();
}
Я добавил несколько комментариев во фрагменте.Я хотел бы убедиться, что ответ был успешным, а затем прочитать тело для пользовательского объекта и использовать этот объект, отправив еще один запрос на забытие.Я не мог понять, как справиться с этим.Спасибо ...