【问题标题】:Set custom error for zuul forwading error为zuul转发错误设置自定义错误
【发布时间】:2020-01-13 04:20:20
【问题描述】:

我是微服务新手,我为 API 网关配置了 zuul,为服务注册表配置了 Eureka,我通过 zuul API 网关注册并运行了 3 个微服务,但当我手动关闭一项服务并尝试通过 zuul 访问时它给出了 500 个内部服务器错误。

错误信息。 { “时间戳”:1568197371584, “状态”:500, "error": "内部服务器错误", “消息”:“路由:RibbonRoutingFilter” }

但我想给出一条自定义错误消息,例如“此服务不工作”,状态码为 406。

我试过这种方式,但几步后我就迷路了

@Configuration
public class HystrixFallbackConfiguration {
    @Bean
    public FallbackProvider zuulFallbackProvider() {
        return new FallbackProvider() {

            @Override
            public String getRoute() {
                return "image_service";
            }

            @Override
            public ClientHttpResponse fallbackResponse(String route, Throwable cause) {
                return null;
            }


        };
    }
}

【问题讨论】:

    标签: java spring-boot netflix-eureka netflix-zuul


    【解决方案1】:

    我认为你需要 Zuulfilter 和 filterType 作为错误。您可以参考以下代码。通过这种方式,您将能够使用 msg 记录自定义异常。

    public class CustomErrorFilter extends ZuulFilter {
    
    private static final Logger LOG = LoggerFactory.getLogger(CustomErrorFilter.class);
    
    @Override
    public String filterType() {
        return "post";
    }
    
    @Override
    public int filterOrder() {
        return -1; 
    }
    
    @Override
    public boolean shouldFilter() {
        RequestContext ctx=RequestContext.getCurrentContext();
        if(ctx.getThrowable()!=null)
            return true;
        else
           return false;
    }
    
    @Override
    public Object run() {
    
            RequestContext ctx = RequestContext.getCurrentContext();
    
                ctx.setThrowable(null); // response is not returned unless 
                                          throwable is set to null.
                ctx.remove("error.status_code");
    
                ctx.setResponseBody(“Error”);
                ctx.getResponse().setContentType("text/plain");
                ctx.setResponseStatusCode(400);
    
        }
    
        return null;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 2018-02-02
      • 1970-01-01
      • 2018-08-06
      • 2019-07-28
      • 2017-03-31
      • 2021-05-30
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多