处理验证错误时,ResponseEntity不响应.status

时间:2017-03-15 14:40:31

标签: spring

我有@ControllerAdvice来处理我的Rest API上的异常。 它看起来像是:

@RestControllerAdvice
public class GlobalResponseEntityExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity handleValidtionErrors(MethodArgumentNotValidException ex) {
        return ResponseEntity.badRequest()
                .contentType(MediaType.APPLICATION_JSON)
        .body(ex.getBindingResult());
    }

我可以在需要时获得400,但我可以将return ResponseEntity.badRequest()替换为return ResponseEntity.ok(),它仍会有HTTP状态400.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要使用@ResponseStatus(HttpStatus.OK)注释您的方法,以便在这种情况下返回200 OK。看看这个

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseStatus.html

它还说明了,

  

状态代码在处理程序时应用于HTTP响应   调用方法并覆盖其他方式设置的状态信息,   比如ResponseEntity或"重定向:"。

我相信即使您使用return ResponseEntity.OK

,这仍然是您仍然收到400 Bad Request的原因