首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成application/octet-stream和application/json

生成application/octet-stream和application/json
EN

Stack Overflow用户
提问于 2018-12-07 06:58:56
回答 2查看 3.2K关注 0票数 2

我有一个端点,它通常返回PDF、Word等类型的文档。这个端点有用户输入,但是我想验证它。

问题是,当我验证输入并希望返回某种类型的错误JSON响应时,最终得到的错误类似于

Failed executing GET /foo/generateBar: NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: FooResponse of media type: application/octet-stream

我在端点上使用的是@Produces({"application/octet-stream", "application/json"})

有没有办法可以通过同时返回JSON和不同的文件格式来避免这个错误?我的印象是我使用的@Produces在做什么,但是我可能完全搞不懂了。

此外,我必须注意,我在前端使用window.open来调用这个端点。

EN

回答 2

Stack Overflow用户

发布于 2021-02-01 19:00:39

Javajavax.ws.rs.core.Response中,你应该在你的头中尝试类似这样的东西:

代码语言:javascript
复制
               Response.status(response.getStatus())
                       .header("Accept", "application/json")
                       .header("Content-type", "application/json")
                       .entity(entity)
                       .build();
票数 2
EN

Stack Overflow用户

发布于 2021-08-03 18:25:49

为了解决这个问题,你必须考虑以下几个方面:

  1. Exceptions管理

在这里,您必须考虑到,每次发生任何异常时,都会抛出自定义异常,异常处理程序将使用@ControllerAdvice或任何其他解决方案来实现。此异常处理程序将以JSON形式返回响应。

返回 application/octet-stream

  1. Handling

对于端点,您需要提到它将生成application/octet-stream。您可以使用:@GetMapping(produces = {MediaType.APPLICATION_OCTET_STREAM}).

GET请求的

  1. Provide,正确的标头

当您调用生成application/octet-stream的端点时,您将添加值为application/octet-stream, application/jsonAccept标头。现在,如果成功,您将收到八位位组流,如果出现任何异常,您将收到JSON响应。

我希望这个解决方案能对你有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53660961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档