Spring boot 404错误自定义错误响应ReST

作者:编程家 分类: spring 时间:2025-09-26

使用Spring Boot开发RESTful API时,我们经常会遇到404错误,即请求的资源未找到。默认情况下,Spring Boot会返回一个简单的错误响应,但有时我们希望能够自定义404错误的响应内容。在本文中,我们将探讨如何 来介绍如何自定义404错误响应,并提供一个示例代码。

自定义404错误响应

在Spring Boot中,我们可以使用@ControllerAdvice注解来定义一个全局的异常处理类,通过该类来处理所有的异常情况。首先,我们需要创建一个类并添加@ControllerAdvice注解:

java

@ControllerAdvice

public class CustomExceptionHandler {

@ExceptionHandler(NoHandlerFoundException.class)

@ResponseStatus(HttpStatus.NOT_FOUND)

@ResponseBody

public ErrorResponse handleNoHandlerFoundException(HttpServletRequest request, NoHandlerFoundException ex) {

ErrorResponse errorResponse = new ErrorResponse();

errorResponse.setErrorCode(HttpStatus.NOT_FOUND.value());

errorResponse.setMessage("资源未找到");

errorResponse.setPath(request.getRequestURI());

return errorResponse;

}

}

在上述代码中,我们使用@ExceptionHandler注解来指定处理NoHandlerFoundException异常的方法。我们还使用@ResponseStatus注解来设置响应的HTTP状态码为404,并使用@ResponseBody注解将方法的返回值转换为JSON格式。在方法中,我们创建了一个ErrorResponse对象,并设置了错误代码、错误消息和请求路径。

接下来,我们需要定义一个ErrorResponse类,用于封装错误响应的信息:

java

public class ErrorResponse {

private int errorCode;

private String message;

private String path;

// getters and setters

}

通过以上步骤,我们已经完成了自定义404错误响应的准备工作。接下来,让我们来测试一下我们的代码。

案例代码

为了测试我们的自定义404错误响应,我们可以创建一个简单的RESTful API。首先,我们需要创建一个Controller类,并添加@RequestMapping注解来定义API的路径:

java

@RestController

public class UserController {

@GetMapping("/users/{id}")

public ResponseEntity getUser(@PathVariable Long id) {

// 根据用户id查询用户信息

User user = userRepository.findById(id).orElse(null);

if (user == null) {

throw new NoHandlerFoundException();

}

return ResponseEntity.ok(user);

}

}

在上述代码中,我们定义了一个根据用户ID获取用户信息的API。如果找不到对应的用户信息,我们将抛出NoHandlerFoundException异常。

现在,我们可以启动我们的应用程序并发送一个GET请求到`/users/1`路径,假设数据库中没有ID为1的用户信息。我们应该能够看到自定义的404错误响应,其中包含我们在CustomExceptionHandler类中定义的错误消息和请求路径。

通过以上步骤,我们成功地实现了自定义404错误响应。在这篇文章中,我们使用自然语言介绍了如何使用Spring Boot来自定义404错误响应,并提供了一个示例代码来帮助读者更好地理解。希望本文对你有所帮助!