Java 使用REST进行数据流传输
将REST与RESTEasy和Swagger一起使用,是否有任何方法可以通过GET端点将数据流返回给调用方?我已经看到了几个可以返回整个流的示例,但是我还没有看到任何可以实际返回数据流的示例。我也看过这个例子(后面是这个链接-),但是,这个例子看起来像是在返回一个流,并期望调用者利用这个流?这是正确的假设吗Java 使用REST进行数据流传输,java,streaming,swagger,resteasy,Java,Streaming,Swagger,Resteasy,将REST与RESTEasy和Swagger一起使用,是否有任何方法可以通过GET端点将数据流返回给调用方?我已经看到了几个可以返回整个流的示例,但是我还没有看到任何可以实际返回数据流的示例。我也看过这个例子(后面是这个链接-),但是,这个例子看起来像是在返回一个流,并期望调用者利用这个流?这是正确的假设吗 @GET @Produces(MediaType.APPLICATION_OCTET_STREAM) @Path("/stream/test") public Response getTes
@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:接受头不匹配
任何帮助都将不胜感激 您可以返回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));
}
@GetMapping(value=“/stream/test”)
@应答器
公共响应getTestStream(){
字符串myName=“name”;
InputStream=newbytearrayinputstream(myName.getBytes(StandardCharsets.UTF_8));
HttpHeaders=新的HttpHeaders();
添加(“缓存控制”,“无缓存,无存储,必须重新验证”);
添加(“Pragma”、“无缓存”);
标题。添加(“到期”、“0”);
返回响应性
.ok()
.标题(标题)
.contentType(MediaType.APPLICATION\u八位字节\u流)
.主体(新输入流资源(流));
}
检查客户端请求的接受
标题,并尝试将其设置为应用程序/octet流
。