我试图在Spring WebFlux中重新创建HttpServletResponse#getWriter
功能但没有成功。
在Spring MVC中,我会扩展HandlerInterceptorAdapter
,使用提到的getWriter
来编写目标响应并从preHandle
方法返回false。我尝试使用以下代码重新创建相同的功能。请参阅以下摘录,了解到目前为止我没有成功的尝试。
@Component
public class CustomInterceptor extends RequestMappingHandlerAdapter
@Override
public Mono<HandlerResult> handle(ServerWebExchange exchange, Object handler) {
exchange.getResponse().writeWith(s -> Mono.just(new SomeDto()));
// creates Internal Server Error, custom WebExceptionHandler not called
return Mono.error(new RuntimeException());
// creates Internal Server Error, custom WebExceptionHandler not called
throw new RuntimeException();
// ignores response write
return super.handle(exchange, handler);
}
}
我还尝试使用WebFilter
,有可能更改响应,但是无法访问HandlerMethod
对象,这是进一步需要的处理
知道如何使用Spring WebFlux执行此操作吗?欢迎所有想法。谢谢。
答案 0 :(得分:0)
可以在新的反应WebFilter
中处理请求/响应,例如
@Component
public class SecurityWebFilter implements WebFilter{
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
if(!exchange.getRequest().getQueryParams().containsKey("user")){
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
}
return chain.filter(exchange);
}
}
检查我的完整webfilter sample。