У меня проблема весной MVC @GetMapping аннотация с продукцией. Справочная информация: Я разработал API, который всегда отвечает в следующей структуре
public class ApiResponse<T> {
private T data;
private Map<String, String> extraInfo;
... constructor / getter / setter
}
У меня есть клиент Angular 8, который использует этот ответ API.
Я собираюсь разработать метод для отправки Excel байта [] с использованием этой структуры. (по какой-то причине я не могу использовать HttpServletResponse, как и другие учебники, найденные в Google)
Во-первых, при отправке данных с простым объектом я могу использовать
@GetMapping(value="/getObject", produces="application/json")
public ApiResponse<MyObject> sendObject(){
Map<String, String> extraInfo = new HashMap<>();
extraInfo.put("some", "thing");
return new ApiResponse(myObject, extraInfo);
}
Мой Angular клиент может прочитайте этот формат правильно.
Кроме того, при отправке одного байта Excel [] я могу использовать
@GetMapping(value="/getExcel", produces="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
public byte[] sendExcelByteArray(){
return myExcelByteArray;
}
Мой Angular клиент может преобразовать байт [] в файл Excel правильно (файл можно открыть нормально)
Но у меня проблема. Когда я собираюсь использовать
@GetMapping(value="/getObject", produces="application/json")
public ApiResponse<byte[]> sendObject(){
Map<String, String> extraInfo = new HashMap<>();
extraInfo.put("some", "thing");
return new ApiResponse(myExcelByteArray, extraInfo);
}
в "application / json" или "application / vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Мой Angular клиент не может читать данные Excel (там указано, что файл поврежден).
Существуют ли какие-либо подходы, я могу использовать ApiResponse, чтобы "обернуть" мой байт Excel [], который Angular клиент может конвертировать нормально?