Чтобы создать экземпляр книги из запроса, учитывая, что у вас есть маршрут, такой как:
@PostMapping("/createBook")
public ResponseEntity createBook(@RequestBody BookDto bookDto){
// do something with data
}
, вы можете от клиента перейти к следующему:
const book = {
author: "George Orwell",
title: "1984",
pageDtoList: []
};
$.ajax({
type: "POST",
data: book,
url: "/createBook",
success: function (response) {
// success
},
error: function (result) {
// error
}
});
Вы можетезатем добавьте страницы с той же логикой, но с файлом, для которого установлено временное значение null, и загрузите файл после, указав идентификатор страницы.
@PostMapping("/addPageToBook")
public ResponseEntity addPage(@RequestParam("bookid") String bookId,
@RequestBody PageDto pageDto){
// add a page instance to your book
}
И после того, как вы сможете установить содержимое страницы:
@PostMapping("/setPageContent")
public ResponseEntity setPage(@RequestParam("bookid") String bookId,
@RequestParam("pageid") String pageId,
@RequestParam("file") MultipartFile content){
// set content to page, ensure book dto is updated with last page instance
}
Вам нужно будет использовать https://developer.mozilla.org/en-US/docs/Web/API/FormData для загрузки AJAX, но, возможно, (в зависимости от вашего варианта использования) простой кнопки ввода файла + отправки может быть достаточно.