Я пишу Spring Boot Application, в котором для GET API мне нужно вернуть CSV-файл в качестве ответа.Я с нетерпением жду предложений по дизайну класса (ов) и интерфейса для достижения цели.
Мой контроллер REST выглядит следующим образом.
@GetMapping(value="export")
public ResponseEntity<?> exportCSV(@RequestParam("sectionTypeName") String sectionTypeName) throws Exception {
}
В целом, мне нужно сделатьследующие
a) Извлечь данные из базы данных для sectionTypeName
b) Подготовить данные CSV
c) Подготовить заголовок
d) Построить ResponseEntity иответить
Я думаю о создании класса для CSV, как показано ниже.
public class ResponseCSV {
@Getter
private String responseHeader;
@Getter
private String response;
public void ResponseCSV(String fileName) {
// prepare responseHeader string with
// file name as value of fileName
}
public void setCSVHeader(String header) {
// Add the header
}
public void addCSVRow(String line) {
}
}
Далее я планирую написать интерфейс, который извлекает данные из базы данных и подготавливает CSV.
public interface CSVExportSvc {
public Boolean exportCSV(ResponseCSV csv, String sectionTypeName);
}
public class CSVExportSvcImpl implements CSVExportSvc {
public Boolean exportCSV(ResponseCSV csv, String sectionTypeName) {
// Read all the data
// Add the header - call csv.setCSVHeader()
// Iterate over each row and call csv.addCSVRow()
}
}
В контроллере покоя, основанном на вызове exportCSV, я буду вызывать ResponseEntity следующим образом.
return ResponseEntity.accepted().headers(csv.getresponseHeader()).body(csv.getresponse());
Это правильный подход?Есть предложения?