在SpringMVC中,我试图用适当的响应来处理“找不到图像”的情况,但到目前为止还没有成功。当catch块执行时,在Chrome浏览器中我得到状态“(failed)net::ERR_HTTP_RESSPONSE_CODE_FAILURE”。我猜这是因为空字节数组不能是一个图像。
如果我想避免一些通用的“无照片”图像,我应该返回什么响应?
@GetMapping( path = "/{name}", produces = MediaType.IMAGE_JPEG_VALUE )
public ResponseEntity<byte[]> get( @PathVariable("name") String name ) {
try {
final MyImage img = this.imageService.getImage( name );
return ResponseEntity
.ok()
.contentType( MediaType.IMAGE_JPEG_VALUE )
.body( img.getBytes() );
}
catch( final ImageNotFoundException e ) {
return new ResponseEntity<>( new byte[] {}, HttpStatus.NOT_FOUND );
}
}
1条答案
按热度按时间ie3xauqp1#
我个人会在一个单独的类中处理所有错误,这个类用于捕获所有错误并返回正确的状态码。查看@ControllerAdvice-annotation。还有更多的可能性,如何处理你的例外。
在你的例子中,你需要从你的get方法中删除try catch块,并创建一个新的类来处理ImageNotFoundException: