向Spring Boot的BasicErrorController JSON错误响应添加属性

时间:2019-03-21 14:51:24

标签: spring-boot

Spring Boot的BasicErrorController以以下格式返回默认的JSON错误消息

{"timestamp":"2019-0214T16:13:47.568+0000","status":401,"error":"Unauthorized", "message":"Unauthorized","path":"/xyz/rest/getResult"}

我想在JSON响应中添加一个新字段,说“ loginSuccess”:“ false”。由于这是一个错误,因此它将始终为假。 为此,我编写了一个新类ExceptionResponse,其中添加了定义错误消息{时间戳,状态,错误,消息,路径,loginSuccess}的字段。

然后我写了一个ControllerAdvice

@ControllerAdvice
public class ErrorHandlingController {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ExceptionResponse> generalException(Exception e) throws Exception {

        ExceptionResponse exceptionResponse = new ExceptionResponse();
        exceptionResponse.setLoginSuccess (false); // Just need to add this extra field
        exceptionResponse.setMessage(e.getMessage());
        exceptionResponse.setError(e.getCause());
        exceptionResponse.setTimestamp(LocalDateTime.now());
        exceptionResponse.setStatus(??);

        return new ResponseEntity<ExceptionResponse>(exceptionResponse, HttpStatus.??);

    }

}

请建议应将什么添加到exceptionResponse.setStatus(??);因此将其设置为返回默认响应,在这种情况下为401。我在Exception e中找不到该代码。同样,在这种情况下,与BasicErrorController返回的状态(即401)匹配的HttpStatus代码。还建议是否有更好的方法,只需在默认响应中添加一个额外的参数。

0 个答案:

没有答案