Как правильно отправить файл из веб-службы REST клиенту?

Я только начал разрабатывать службы REST, но я столкнулся с трудной ситуацией: отправка файлов из моей службы REST моему клиенту. До сих пор я знал, как отправлять простые типы данных (строки, целые числа и т. Д.), Но отправка файла - это другой вопрос, поскольку существует так много форматов файлов, что я не знаю, с чего мне вообще начинать. Мой REST-сервис создан на Java, и я использую Джерси, я отправляю все данные в формате 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})Это правильный путь? Файлы, которые я отправляю, являются конкретными, поэтому клиенту не нужно просматривать файлы. Кто-нибудь может подсказать мне, как я должен отправить файл? Должен ли я кодировать его с помощью base64, чтобы отправить его как объект JSON? или в кодировке нет необходимости отправлять ее как объект JSON? Спасибо за любую помощь, которую вы можете оказать.

Ответы на вопрос(4)

Ваш ответ на вопрос