Правило разработки для ответа на API REST GET с выводом CSV - PullRequest
0 голосов
/ 02 октября 2018

Я пишу 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());

Это правильный подход?Есть предложения?

1 Ответ

0 голосов
/ 02 октября 2018

Мои предложения:

  1. Сохраняйте неизменность ResponseCSV, нет установщиков, предоставьте конструктор!

  2. Измените подпись CSVExportSvc.exportCSV, чтобы ее было проще, не возвращайте логическое значение:

  3. Попробуйте установить тип содержимого в csv / text.

Интерфейс может выглядеть следующим образом:

public interface CSVExportSvc {
   public ResponseCSV exportCSV(String sectionTypeName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...