Vertx Streaming csv файла / данных для ответа http

Я хочу вернуть некоторые данные из БД в виде CSV-файла в ответе API Vertx. Я перешел по этой ссылке

Но я не могу вернуть правильный CSV-файл в качестве ответа API.

Мой код:

rc.response()
        .putHeader("Content-Type", "application/csv")
        .putHeader("Content-Disposition", "attachment; filename=stream_wide.csv")
        .putHeader(HttpHeaders.TRANSFER_ENCODING, "chunked")
        .setChunked(true);

getDataFromDB()
        .subscribe(
            rs -> rc.response().write(rs, "UTF-8"),
            ex -> {ex.printStackTrace(); logger.error("exception  encountered " + ex.getMessage());},
            () -> {rc.response().end(); rc.response().close();});

person oOXAam    schedule 08.08.2020    source источник
comment
API обычно возвращают JSON, а не CSV   -  person OneCricketeer    schedule 09.08.2020


Ответы (1)


Какого рода ошибку / поведение вы получаете?

Попробуйте создать буфер с байтами из файла CSV.

byte [] csvBytes = <some method extracting the bytes representing the csv file from the result set>

response.end(Buffer.buffer(csvBytes));
person user2041427    schedule 09.08.2020