Saya baru saja mulai mengembangkan layanan REST, tetapi saya menemukan situasi yang sulit: mengirim file dari layanan REST saya ke klien saya. Sejauh ini saya sudah memahami cara mengirim tipe data sederhana (string, integer, dll) tetapi mengirim file adalah masalah yang berbeda karena ada begitu banyak format file yang saya tidak tahu di mana saya harus memulai. Layanan REST saya dibuat di Java dan saya menggunakan Jersey, saya mengirim semua data menggunakan format JSON.
Saya telah membaca tentang pengkodean base64, beberapa orang mengatakan itu teknik yang bagus, yang lain mengatakan itu bukan karena masalah ukuran file. Bagaimana cara yang benar? Beginilah tampilan kelas sumber daya sederhana dalam proyek saya:
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;
}
}
Saya menduga kode untuk mengirim file akan menjadi seperti:
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;
}
}
Jenis anotasi apa yang harus saya gunakan? Saya telah melihat beberapa orang merekomendasikan untuk @GET
digunakan @Produces({application/x-octet-stream})
, apakah itu cara yang benar? File yang saya kirim adalah file khusus sehingga klien tidak perlu menelusuri file. Adakah yang bisa memandu saya tentang bagaimana saya bisa mengirim file? Haruskah saya menyandikannya menggunakan base64 untuk mengirimkannya sebagai objek JSON? atau encoding tidak diperlukan untuk mengirimkannya sebagai objek JSON? Terima kasih atas bantuan yang mungkin Anda berikan.
java.io.File
(atau jalur file) di server Anda atau apakah datanya berasal dari beberapa sumber lain, seperti database, layanan web, panggilan metode yang mengembalikanInputStream
?