मैंने अभी आरईएसटी सेवाओं को विकसित करना शुरू किया है, लेकिन मैं एक मुश्किल स्थिति में आया हूं: मेरे आरईएस सेवा से अपने क्लाइंट को फाइलें भेजना। अब तक मैं कैसे सरल डेटा प्रकार (तार, पूर्णांक, आदि) भेजने के लिए लटका दिया है, लेकिन एक फ़ाइल भेजना एक अलग मामला है क्योंकि बहुत सारे फ़ाइल स्वरूप हैं जो मुझे नहीं पता कि मुझे कहां से भी शुरू करना चाहिए। मेरी REST सेवा जावा पर बनी है और मैं जर्सी का उपयोग कर रहा हूं, मैं JSON प्रारूप का उपयोग करके सभी डेटा भेज रहा हूं।
मैंने बेस 64 एनकोडिंग के बारे में पढ़ा है, कुछ लोगों का कहना है कि यह एक अच्छी तकनीक है, दूसरों का कहना है कि यह फ़ाइल आकार के मुद्दों के कारण नहीं है। सही तरीका क्या है? इस तरह मेरी परियोजना में एक साधारण संसाधन वर्ग दिख रहा है:
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})
, क्या यह सही तरीका है? मैं जो फाइलें भेज रहा हूं वे विशिष्ट हैं इसलिए क्लाइंट को फाइलों के माध्यम से ब्राउज़ करने की आवश्यकता नहीं है। क्या कोई मुझे गाइड कर सकता है कि मुझे फाइल कैसे भेजनी है? क्या मुझे इसे J64 ऑब्जेक्ट के रूप में भेजने के लिए base64 का उपयोग कर सांकेतिक शब्दों में बदलना चाहिए? या एन्कोडिंग JSON ऑब्जेक्ट के रूप में भेजने के लिए आवश्यक नहीं है? किसी भी मदद के लिए धन्यवाद आप दे सकते हैं।
java.io.File
अपने सर्वर पर वास्तविक (या फ़ाइल पथ) है या डेटा किसी अन्य स्रोत से आ रहा है, जैसे डेटाबेस, वेब सेवा, मेथड कॉल रिटर्निंग एInputStream
?