将REST与RESTEasy和Swagger一起使用,有没有办法通过GET端点将数据流回调用者?我已经看过几个可以返回整个流的示例,但我还没有看到任何可以实际回传数据的示例。我也看过这个例子(从这个链接开始 - Return File From Resteasy Server)然而,这个例子看起来像是在返回一个流并期望调用者利用这个流?这是一个正确的假设吗?:
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("/stream/test")
public Response getTestStream() {
String myName = "name";
InputStream stream = new ByteArrayInputStream(myName.getBytes(StandardCharsets.UTF_8));
return Response.ok().entity(stream).build();
}
但这似乎对我不起作用。我得到一个异常:javax.ws.rs.NotAcceptableException:RESTEASY003635:接受标头不匹配。
非常感谢任何帮助!
答案 0 :(得分:2)
您可以在Response中返回inputstream对象的对象。
例如
@GetMapping(value = "/stream/test")
@ResponseBody
public ResponseEntity<?> getTestStream() {
String myName = "name";
InputStream stream = new ByteArrayInputStream(myName.getBytes(StandardCharsets.UTF_8));
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
return ResponseEntity
.ok()
.headers(headers)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(new InputStreamResource(stream));
}