在 webflux 中读取请求正文
read request body in webflux
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Flux<DataBuffer> body = exchange.getRequest().getBody();
//Return different according to body content...
if (condition) {
return chain.filter(exchange);
} else {
return Mono.empty();
}
}
如何获取请求正文以在spring-webflux 中使用spring 5 进行一些自定义判断?
你的问题不是很清楚。我假设您的疑问是您在代码片段注释中输入的内容。
可能有不同的方法可以实现您想要的。一种简单的方法是使用 flatMap 运算符。大致如下:
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Flux<DataBuffer> body = exchange.getRequest().getBody()
.flatMap(data -> {
if (condition) {
return chain.filter(exchange);
}
return Mono.empty();
});
//...
}
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Flux<DataBuffer> body = exchange.getRequest().getBody();
//Return different according to body content...
if (condition) {
return chain.filter(exchange);
} else {
return Mono.empty();
}
}
如何获取请求正文以在spring-webflux 中使用spring 5 进行一些自定义判断?
你的问题不是很清楚。我假设您的疑问是您在代码片段注释中输入的内容。
可能有不同的方法可以实现您想要的。一种简单的方法是使用 flatMap 运算符。大致如下:
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Flux<DataBuffer> body = exchange.getRequest().getBody()
.flatMap(data -> {
if (condition) {
return chain.filter(exchange);
}
return Mono.empty();
});
//...
}