HttpMessageNotReadableException
是 Spring 框架中常见的异常之一,通常发生在客户端发送的 HTTP 请求体无法被正确读取时。这个异常可能由多种原因引起,包括但不限于:
HttpMessageConverter
来处理请求正文的数据类型。确保客户端发送的请求确实包含了请求正文。
使用工具(如 Postman)检查请求正文的格式是否正确。例如,如果是 JSON 格式,确保它是有效的 JSON。
确保 Spring 应用中配置了适当的 HttpMessageConverter
。例如,如果你正在处理 JSON 数据,确保添加了 MappingJackson2HttpMessageConverter
。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter());
}
}
@RequestBody
注解在控制器的方法参数中使用 @RequestBody
注解来明确指示该参数应该从请求正文中读取。
@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/data")
public ResponseEntity<?> handleRequest(@RequestBody MyRequestBody requestBody) {
// 处理请求正文
return ResponseEntity.ok("Success");
}
}
在全局异常处理器中捕获 HttpMessageNotReadableException
并返回适当的错误响应。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(HttpMessageNotReadableException.class)
public ResponseEntity<ErrorResponse> handleHttpMessageNotReadable(HttpMessageNotReadableException ex) {
ErrorResponse errorResponse = new ErrorResponse("Invalid request body", HttpStatus.BAD_REQUEST.value());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
通过上述方法,可以有效解决 HttpMessageNotReadableException
异常,确保应用程序能够正确处理客户端发送的请求正文。
领取专属 10元无门槛券
手把手带您无忧上云