我们正在使用Spring Cloud Gateway和Spring Boot 2以及反应式webflux模块。 有一个验证过滤器,为其中一个路由添加。 现在,如果我们抛出一个带有特定状态代码的RuntimeException,它实际上并没有恢复。 之前这个auth检查是Spring中HandlerInterceptor的一部分,现在我们不能使用web模块和webflux(来自Spring云网关的冲突)。 例如:
@Override
public GatewayFilter apply(Object config) {
ServerHttpRequest httpRequest = exchange.getRequest();
if(!someUtil.validRequest(httpRequest) {
throw new RuntimeException("Throw 401 Unauthorized with Custom error code and message");
}
}
目前,实际响应总是会产生500内部服务器错误。 从哪里来的?我们可以在这里抓住过滤器中的错误吗?
答案 0 :(得分:1)
您可以实现自定义错误处理程序,这里是spring boot document。
或者您可以简单地引发ResponseStatusException,默认错误处理程序将呈现特定状态。