当从另一个 Mono<Object>> 内部返回时,如何避免破坏 WebFilter 中的请求流?
How can avoid breaking request flow in WebFilter when returning from inside another Mono<Object>>?
这里有一些可笑的代码,例如
@Component
public final class ReCaptchaCheckWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return Mono.just("foo").map(s -> chain.filter(exchange)).then();
}
}
有了这个 webfiler,请求永远不会到达我的控制器。它 return 200 http 状态代码。
如果我发现自己需要从另一个 Mono
chain.filter
return 一个单声道,但在您的示例中它不是流的一部分(没有任何内容订阅它)。要解决这个问题,请使用 flatMap 方法
return Mono.just("foo").flatMap(s -> chain.filter(exchange));
这里有一些可笑的代码,例如
@Component
public final class ReCaptchaCheckWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return Mono.just("foo").map(s -> chain.filter(exchange)).then();
}
}
有了这个 webfiler,请求永远不会到达我的控制器。它 return 200 http 状态代码。
如果我发现自己需要从另一个 Mono
chain.filter
return 一个单声道,但在您的示例中它不是流的一部分(没有任何内容订阅它)。要解决这个问题,请使用 flatMap 方法
return Mono.just("foo").flatMap(s -> chain.filter(exchange));