Как отправить идентификатор базы данных через ResponseEntity? - PullRequest
0 голосов
/ 13 января 2020

Я использую Spring Boot для моего бэкэнда, который отправляет JSON в теле ResponseEntity на Vue. js внешний интерфейс.

JSON также находится в базе данных MySQL, где он получает идентификатор. Этот идентификатор присваивается JSON после его создания, поэтому я не могу изменить свой JSON и включить в него свой идентификатор.

Итак, мне нужно включить этот идентификатор документа в ResponseEntity другими способами (для предоставления ссылки на скачивание документа через другую конечную точку REST).

Вот как я возвращаю свою ResponseEntity в данный момент:

public static ResponseEntity<String> getOutput(DocumentFile outputFile, String format)
        throws IOException {

    Path path = Paths.get(outputFile.getAbsolutePath());
    String content = new String(Files.readAllBytes(path));
    int documentID = outputFile.getId() + 1;

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(getMediaTypeFromFormat(format));

    ResponseEntity<String> responseString = ResponseEntity.ok().headers(headers).body(content);
    return responseString;
}

documentID - это идентификатор, который я хочу отправить с JSON.

Могу ли я включить этот идентификатор как-то в шапке или в теле или где-то еще? И как мне этого добиться?

1 Ответ

0 голосов
/ 13 января 2020

Можете ли вы поделиться структурой вашего JSON объекта?

Существует несколько подходов к этому.
a) вернуть значение идентификатора в заголовке, например:

public static ResponseEntity<String> getOutput(DocumentFile outputFile, String format)
        throws IOException {

    Path path = Paths.get(outputFile.getAbsolutePath());
    String content = new String(Files.readAllBytes(path));
    int documentID = outputFile.getId() + 1;

    HttpHeaders headers = new HttpHeaders();
    headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "X-Custom-ID");
    headers.add("X-Custom-ID", String.valueOf(documentID));
    headers.setContentType(getMediaTypeFromFormat(format));

    ResponseEntity<String> responseString = ResponseEntity.ok().headers(headers).body(content);
    return responseString;
}

b) создать пользовательский объект возврата, например:

class CustomResponse {
  String id;  // would be the id
  String value;  // would be the json
}

c)

Этот идентификатор присваивается JSON после его создания, поэтому я не могу изменить свой JSON и включить в него свой идентификатор.

Да, ты можешь. Сопоставьте свой JSON с объектом домена (с помощью ObjectMapper) и добавьте к нему идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...