繁体   English   中英

Spring Boot Rest端点的路径/错误

[英]Spring Boot rest endpoint with path /error

我有一个简单的休息端点,如下所示:

@RequestMapping(method = RequestMethod.GET, value = "/error")
public ResponseEntity<String> genericErrorHandler() {
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("");
}

这样做的目的是使其成为我的REST API的默认错误响应。 但是,Spring永远不会识别此端点。 它从未被调用。 问题在于路径本身。 它是“ /错误”。 如果我将其更改为其他任何东西,例如“ / foo”,它将起作用。

根据此文档:

在启动时,Spring Boot会尝试查找/ error的映射。 按照约定,以/ error结尾的URL映射到具有相同名称的逻辑视图:error。 如果找不到从/ error到View的映射,Spring Boot会定义自己的后备错误页面-所谓的“ Whitelabel Error Page”(最小页面,其中仅包含HTTP状态信息和任何错误详细信息,例如来自未捕获的异常的消息)。

所以。 每当抛出异常且任何@ExceptionHandler注释方法都未处理该异常时,Spring引导都会调用此端点( /error )。 我只是想摆脱Spring Boot提供的默认“ Whitelabel Error Page”,而使用此端点。 我是否误解了/ error页面的目的? 还是我做错了什么?

=============== 更新 =================

因此,我通过强制包含/ error端点的类实现接口ErrorController来使/ error端点起作用,如可能的重复文章中所建议的那样

但是,此后,我所有的端点都重新路由到此/ error。 意思是,以前所有有效的东西,例如/ user / 1或/ orders,现在都归结为/ error。 您知道这里出了什么问题吗?

这是定义/ error的地方:

@RestController
@RequestMapping("/error")
public class FallbackErrorController implements ErrorController {
    private static final String ERROR_PATH = "/error";

    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<String> genericErrorHandler() {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("A fake error");
    }

    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }
}

这对我有用:

@Override
public String getErrorPath() {
return PATH;
}    

返回错误页面的路径。

private static final String PATH = "/error";

现在将其重定向到/ error路由。

依次地,

@Controller
@RequestMapping(value="/")
public class HomeController implements ErrorController{

private static final String PATH = "/error";

@GetMapping(value=PATH)
    public String error(Model model) {

        return "error/error404";
    }

@Override
    public String getErrorPath() {
        return PATH;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM