当前位置: 首页 > 知识库问答 >
问题:

设置自定义错误zuul涉水错误

符允晨
2023-03-14

我是微服务新手,我为API gateway配置了zuul,为service registry配置了Eureka,我通过zuul API gateway注册并运行了3个微服务,没有任何问题,但当我手动关闭一个服务并尝试通过zuul访问时,会出现500个内部服务器错误。

错误消息。{“时间戳”:1568197371584,“状态”:500,“错误”:“内部服务器错误”,“消息”:“路由: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;
            }


        };
    }
}

共有1个答案

彭鹭洋
2023-03-14

我想你需要一个ZumFilter,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;
}
 类似资料:
  • 本文向大家介绍APACHE 自定义404错误页面设置方法,包括了APACHE 自定义404错误页面设置方法的使用技巧和注意事项,需要的朋友参考一下 方法一:   在httpd.conf中设置对目录开启。    AllowOverride All   然后在目录里放一个.htaccess(.htaccess),添加:   errorDocument 404 /404.php 1.这个的内容根据你的情

  • Apache可以让网站管理员自己自定义对一些错误和问题的响应。 自定义的响应可以定义为当服务器检测到错误或问题时才被激活。 如果一个脚本崩溃并产生"500 Server Error"响应,那么这个响应可以被更友好的提示替换或者干脆用重定向语句跳到其他的URL(本地的或外部的)。 行为 老式的行为 Apache1.3 会响应一些对于用户没有任何意义的错误或问题信息,而且不会将产生这些错误的原因写入日

  • 所有的错误最终都会被 Tango.ErrHandler 进行处理。 你可以自定义你的错误处理方式来替代默认的。例如: var ( prefix = "<html><head>tango</head><body><div>" suffix = fmt.Sprintf("</div><div>version: %s</div></body></html>", tango.Version

  • Flask 自带了很顺手的 abort() 函数用于以一个 HTTP 失败代码 中断一个请求,他也会提供一个非常简单的错误页面,用于提供一些基础的描述。 这个页面太朴素了以至于缺乏一点灵气。 依赖于错误代码的不同,用户看到某个错误的可能性大小也不同。 通常的错误代码 下面列出了一些用户经常遇到的错误代码,即使在这个应用准确无误的情况下也可能发生: 404 Not Found 经典的“哎呦,您输入的

  • 404和500错误客户端和服务端都会通过error.js组件处理。如果你想改写它,则新建_error.js在文件夹中: import React from 'react' export default class Error extends React.Component { static getInitialProps({ res, err }) { const statusCod