【发布时间】:2017-05-08 15:33:47
【问题描述】:
我正在使用 Spring4 开发一个 RESTful 应用程序。 我想处理 POST 请求不包含正文的情况。 我编写了以下自定义异常处理程序:
@ControllerAdvice
public class MyRestExceptionHandler {
@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<MyErrorResponse> handleJsonMappingException(JsonMappingException ex) {
MyErrorResponse errorResponse = new MyErrorResponse("request has empty body");
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(Throwable.class)
public ResponseEntity<MyErrorResponse> handleDefaultException(Throwable ex) {
MyErrorResponse errorResponse = new MyErrorResponse(ex);
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
@RestController
public class ContactRestController{
@RequestMapping(path="/contact", method=RequestMethod.POST)
public void save(@RequestBody ContactDTO contactDto) {...}
}
当它收到没有正文的 POST 时,不会调用这些方法。 反而, 客户端收到 400 BAD REQUEST HTTP 状态和空正文的响应。 有人知道怎么处理吗?
【问题讨论】:
-
你试过
@ExceptionHandler(JsonMappingException.class)吗? -
是的。同样的行为。
标签: java spring rest spring-boot spring-4