在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(); }
可是这样你只返回一个JSON响应,我想发送的文件实体以及在同样的反应。 – Ghayth
你应该尝试下载文件吗?会在 –
上面添加示例代码好的,你在右上方写了两个方法,一个返回一个JSON,另一个返回一个File,我想要的是在同一个Response方法中返回JSON和FILE。 – Ghayth