在RESTful响应中返回多个实体?

问题描述:

我正在开发一个RESTful websevices项目,我的问题很简单, 有没有办法在同一个响应中返回'File'和'JSON'实体?在RESTful响应中返回多个实体?

例如为:假设我有这样的方法:

@GET 
     @Path("downloadFile") 
     @Consumes(MediaType.TEXT_PLAIN) 
     public Response downloadLogStream(.....) { 
     ..... 
     Response.ok(resultFile); 
     } 

,但我需要返回文件本身之外的另一个实体无需增加额外的头。

是可能的吗?

您只能发送回复,但可能是一个复杂的对象。将结果/ json和状态封装在响应中。

return Response.status(200).entity(result).build(); 

这里更多

@GET 
@Path("downloadFile") 
@Consumes(MediaType.TEXT_PLAIN) 
public Response downloadLogStream(.....) { 
     // Assuming result is json string 
     String result = " JSON is "+jsonObj; 
     return Response.status(200).entity(result).build(); 

    } 
} 

文件下载

private static final String FILE_PATH = "pathTo:\\filename. Zip"; 
@GET @Path("/get")   
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response getFile() 
    { 
    File file = new File(FILE_PATH); 
    ResponseBuilder response = Response.ok((Object) file); 
    response.header("Content-Disposition", "attachment; filename=newfile.zip"); 
    return response.build(); } 
+0

可是这样你只返回一个JSON响应,我想发送的文件实体以及在同样的反应。 – Ghayth

+0

你应该尝试下载文件吗?会在 –

+0

上面添加示例代码好的,你在右上方写了两个方法,一个返回一个JSON,另一个返回一个File,我想要的是在同一个Response方法中返回JSON和FILE。 – Ghayth