java - Spring 休息 Controller : HTTP 406 when an exception is thrown in Rest Controller

标签 java spring http spring-restcontroller spring-rest

我有一个 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,但是当图像不存在时,它会抛出(不返回)业务异常。

在我的其余客户端中,我专门使用 header “accept:application/octet-stream”。

对于异常情况,我从服务器获取 HTTP 406 响应。我想这是因为当抛出异常时,它被构建为 JSON object由于产品是 application/octet-stream ,因此它是不兼容的。这是我的理解。

任何人都可以建议我的理解是否正确,如果是,我该如何解决这个问题。

最佳答案

您应该有一个该异常的处理程序,用于处理异常以返回您想要的值。 This可能有帮助

关于java - Spring 休息 Controller : HTTP 406 when an exception is thrown in Rest Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374361/

相关文章:

spring - intellij - spring 未被识别(未映射的 Spring 配置)

java - 使用 poi xssf 和 sax 解析器解析 xlsx 文件的一部分

java - 组织.postgresql.util.PSQLException : FATAL: database "pma-springbootdb"

java - 贾克斯RS : How can I run a method automatically everytime my server restarts?

spring - 无法从 InputStream : Invalid Content-Type:text/html 创建消息

javascript - 如何发送参数来发布http请求?

apache - 如何为同一域但不同的上下文路径设置 2 个不同的 Web/应用程序服务器?

javascript - AngularJS $scope 变量仅通过 HTTP GET 设置一次

java - 如何将 chilkatsoft 添加到 netbeans java 中

java - 如何处理与 jackson hibernate 的双向一对一关系