我刚刚开始开发 REST 服务,但是我遇到了一个困难的情况: 将文件从 REST 服务发送到我的客户端。到目前为止,我已经掌握了如何发送简单数据类型(字符串、整数等) ,但发送文件是另一回事,因为有太多的文件格式,我甚至不知道从哪里开始。我的 REST 服务是用 Java 制作的,我使用 Jersey,我使用 JSON 格式发送所有数据。
I've read about base64 encoding, some people say it's a good technique, others say it isn't because of file size issues. What is the correct way? This is how a simple resource class in my project is looking:
import java.sql.SQLException;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;
import com.mx.ipn.escom.testerRest.dao.TemaDao;
import com.mx.ipn.escom.testerRest.modelo.Tema;
@Path("/temas")
public class TemaResource {
@GET
@Produces({MediaType.APPLICATION_JSON})
public List<Tema> getTemas() throws SQLException{
TemaDao temaDao = new TemaDao();
List<Tema> temas=temaDao.getTemas();
temaDao.terminarSesion();
return temas;
}
}
我猜发送文件的代码是这样的:
import java.sql.SQLException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/resourceFiles")
public class FileResource {
@GET
@Produces({application/x-octet-stream})
public File getFiles() throws SQLException{ //I'm not really sure what kind of data type I should return
// Code for encoding the file or just send it in a data stream, I really don't know what should be done here
return file;
}
}
我应该使用哪种注释?我看到一些人推荐使用 @Produces({application/x-octet-stream})
的 @GET
,这是正确的方法吗?我发送的文件是特定的,所以客户端不需要浏览这些文件。有人能告诉我该怎么发送文件吗?我是否应该使用 base64对其进行编码,以将其作为 JSON 对象发送?或者不需要编码就可以将其作为 JSON 对象发送?谢谢你的帮助。