我有一个RestEnd点,它返回带有byte []有效负载的ResponseEntity,即下面的ResponseEntity<byte[]>
示例片段:
@GetMapping(value = { "/image/{id}",produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE })
public ResponseEntity<byte[]> getImage() {
// some logic
byte[] bytes = fetchImageService.getImage(id):
if(imageFound) {
return new ResponseEntity<byte[]> (bytes,headers,HttpStatus.OK);
}
else {
throw new ImageNotFoundException(Cannot find file);
}
}
存在图像时,它将返回ResponseEntity,但是当图像不存在时,它将引发(不返回)业务异常。
在我的其余客户端中,我专门使用标头“ accept:application / octet-stream”。
对于异常情况,我从服务器获取HTTP 406响应。我猜这是由于抛出异常时的事实,它被构建为JSON object
,并且由于PRODUCES是application/octet-stream
,因此它是不兼容的。这是我的理解。
任何人都可以暗示我的理解是正确的,如果是,我该如何解决。