gpt4 book ai didi

java - Spring REST 巨大的响应导致响应编写器被多次调用

转载 作者:行者123 更新时间:2023-11-30 08:43:42 25 4
gpt4 key购买 nike

我有一个非常简单的 Controller 操作,它访问服务层并最终返回一个巨大的响应。响应被部分发送,但它在随机位置最终看起来像这样:

...,"尺寸":{"width":400,"height":394},"hostedAtS3":true},"

我得到以下异常:

java.lang.IllegalStateException: 已为此响应调用 getOutputStream()

这个 Controller 非常简单:

@JsonView(value = StickerPackView.Admin.class)
@ApiOperation(value = "[ADMIN] Lists all categories regardless visibility", response = StickerCategory.class)
@RequestMapping(value = "/categories/all", method = RequestMethod.GET)
public ResponseEntity getCategories(Principal principal) {
return new ResponseEntity(stickerService.getAllCategories(), OK);
}

我尝试的第一件事是让它成为 DeferredResultCallable 认为它可能需要更长的时间来生成响应。不幸的是,事实并非如此。当我将方法留在那里并最终返回一些较小的响应时——比如单个类别——没问题。

我不知道如何处理它。这是 full stacktrace .

最佳答案

检查这是否不是对 HTTP 的一般理解的问题。

Basic rule of HTTP: one request, one response. You can only send back one thing to a request.

您提到,当您只发送一个类别时它会起作用。也许,如果您正在处理大量数据,您的 Controller 会将其作为多重响应进行处理。您提供的代码有限,很难说具体是什么原因导致的错误。

希望对您有所帮助。

关于java - Spring REST 巨大的响应导致响应编写器被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com