Чтобы указать JAX-RS, что вызов данного метода приводит к загрузке файла, необходимо аннотировать метод @Produces("content/type")
, например @Produces("text/plain")
для случая с текстовым файлов. Также необходимо указать Content-Disposition
в ответе сервера.
Код примера:
package ru.mydesignstudio.rest; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; @Path("/hello") public class RestService { @GET @Path("/file") @Produces("text/plain") public Response getFile() throws IOException { File file = new File("test.txt"); try (BufferedWriter writer = new BufferedWriter( new FileWriter(file))) { writer.write("Hello from JAX-RS REST Service!"); writer.flush(); writer.close(); } return Response.ok(). entity(file). header("Content-disposition", "attachment; filename=\"test-file.txt\"") .build(); } }
Результат:
