I hava a customer filter, I want to return specified content such as "Hello World", but I can only get response status code 502 without response content. Where is wrong?
@Component
public class CustomerFilter implements GatewayFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
byte[] bytes = "Hello World".getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
exchange.getResponse().writeWith(Flux.just(buffer));
exchange.getResponse().setStatusCode(HttpStatus.BAD_GATEWAY);
return exchange.getResponse().setComplete();
}
}
If I don't call exchange.getResponse().setComplete() , it works, I get response body "Hello World",
can anyone explain it ?
@Component
public class CustomerFilter implements GatewayFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
byte[] bytes = "Hello World".getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
exchange.getResponse().setStatusCode(HttpStatus.BAD_GATEWAY);
return exchange.getResponse().writeWith(Flux.just(buffer));
}
}
If I don't call
exchange.getResponse().setComplete(), it works, I get response body "Hello World",
can anyone explain it ?@Component public class CustomerFilter implements GatewayFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { byte[] bytes = "Hello World".getBytes(StandardCharsets.UTF_8); DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes); exchange.getResponse().setStatusCode(HttpStatus.BAD_GATEWAY); return exchange.getResponse().writeWith(Flux.just(buffer)); } }
thanks
Most helpful comment
If I don't call
exchange.getResponse().setComplete(), it works, I get response body "Hello World",can anyone explain it ?