如果发生错误,Spring RestController返回ResponseEntity <byte []>

时间:2019-04-18 10:50:24

标签: spring spring-boot

我在spring boot服务中有一个rest控制器,如下所示:

公共ResponseEntity getDocContent(String id)

此控制器操作会产生MediaType.Octet_Stream

我想知道当我真的没有字节数组内容而是带错误消息的String时,如果返回非Http OK响应该返回什么。在错误的情况下,我不想生成一个八位位组流,而是生成一个错误的JSon

我可以让服务同时生成八位字节流和application / json,但是如果出现错误,我的困惑是围绕字节数组的返回类型,在这种情况下,我想生成一个Json而不是字节数组

请给我有关如何解决此问题的想法

1 个答案:

答案 0 :(得分:0)

添加一个controllerAdvice来处理RestContoller中引发的异常。

@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler{


    @ExceptionHandler(MyException.class)
    @ResponseStatus(HttpStatus.CONFLICT) //Just an example code
    public ResponseEntity<GeneralMessage> handleGacaException(MyException ex) {
        LOGGER.error(ex.getMessage());
        GeneralMessage errorMessage = new GeneralMessage(ex.getErrorCode().toString(), ex.getErrorMessage());

        return ResponseEntity.status(HttpStatus.CONFLICT).body(errorMessage);
    }


}

比将MyException扔在RestController上。