用于下载文件的Spring端点成功(200),但调用了/ error端点(406)

时间:2018-08-16 01:21:33

标签: java spring rest spring-boot

其中一台Spring服务器具有一个用于下载文件的端点。该服务器是网关,因此它调用另一个服务器来获取文件。内部调用成功,并且文件内容返回到网关服务器。

为了保留内部调用的响应头,网关创建一个ResponseEntity对象。这些标头包括content-typecontent-lengthcontent-disposition

问题在于,当网关端点返回时,请求将以某种方式重定向到/error端点,该端点以状态代码406返回。

这是端点代码:

@GetMapping(path = "/download", produces = APPLICATION_OCTET_STREAM_VALUE)
@ResponseStatus(code = HttpStatus.OK, reason = "Success")
public ResponseEntity<byte[]> downloadAttachment(
    @RequestParam String name,
    @RequestParam String referenceId)
{
    return internalService.downloadFile(referenceId, name);
}

1 个答案:

答案 0 :(得分:2)

我终于找到了问题。 @ResponseStatus注释会覆盖自定义ResponseEntity。实际上,这实际上记录在注释的Javadoc中:

The status code is applied to the HTTP response when the handler
method is invoked and overrides status information set by other means,
like {@code ResponseEntity} or {@code "redirect:"}.

我希望这会帮助在同一端点上意外使用ResponseEntity@ResponseStatus的其他人。