[英]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.