REST 서비스 개발을 막 시작했지만 REST 서비스에서 클라이언트로 파일을 보내는 어려운 상황에 직면했습니다. 지금까지 간단한 데이터 유형 (문자열, 정수 등)을 보내는 방법에 대해 알아 봤지만 파일 형식이 너무 많아서 어디서부터 시작해야할지 알 수 없기 때문에 파일을 보내는 것은 다른 문제입니다. 내 REST 서비스는 Java로 만들어졌으며 Jersey를 사용하고 있으며 JSON 형식을 사용하여 모든 데이터를 보냅니다.
나는 base64 인코딩에 대해 읽었고 어떤 사람들은 이것이 좋은 기술이라고 말하고 다른 사람들은 파일 크기 문제 때문이 아니라고 말합니다. 올바른 방법은 무엇입니까? 이것은 내 프로젝트의 간단한 리소스 클래스가 어떻게 보이는지입니다.
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;
}
}
어떤 종류의 주석을 사용해야합니까? 나는 어떤 사람들이을 @GET
사용 하는 것을 추천하는 것을 보았는데 @Produces({application/x-octet-stream})
, 이것이 올바른 방법입니까? 내가 보내는 파일은 특정 파일이므로 클라이언트가 파일을 찾아 볼 필요가 없습니다. 누구든지 파일을 어떻게 보내야하는지 안내해 줄 수 있습니까? JSON 객체로 보내려면 base64를 사용하여 인코딩해야합니까? 또는 JSON 객체로 보내기 위해 인코딩이 필요하지 않습니까? 도움을 주셔서 감사합니다.
java.io.File
서버에 실제 (또는 파일 경로)가 있거나 데이터가 데이터베이스, 웹 서비스, 메서드 호출과 같은 다른 소스에서 오는 데이터InputStream
입니까?