GPT가 알려준 요약본

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class BookService {
@Autowired
private final BookRepository bookRepository;
RestTemplate restTemplate = new RestTemplate();
@Transactional
public void fetchDataFromApi() {
List<String> isbnCodeList = List.of("9791133487516", "9791133487523", "9791133487530", "9791133487547", "9791133487554", "9791133487561", "9791133487578", "9791133487585", "9791133487592", "9791133487608");
List<Book> bookList = new ArrayList<>();
for (String isbnCode : isbnCodeList) {
// 알라딘 상품조회 url
String apiUrl = "https://www.aladin.co.kr/ttb/api/ItemLookUp.aspx?ttbkey={알라딘에서 발급받은 ttbkey}&itemIdType=ISBN&ItemId=" + isbnCode + "&output=js&Version=20131101&OptResult=packing";
BookApiResponse response = restTemplate.getForObject(apiUrl, BookApiResponse.class);
BookApiResponse.Item item = response.getItem().get(0);
Book book = Book.builder()
.name(item.getTitle())
.author(item.getAuthor())
.isbn(item.getIsbn13())
.depth(item.getSubInfo().getPacking().getSizeDepth())
.title_url(item.getCover())
bookList.add(book);
}
bookRepository.saveAll(bookList);
}
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class BookApiResponse {
private String version;
private String logo;
private String title;
private String link;
private String pubDate;
private int totalResults;
private int startIndex;
private int itemsPerPage;
private String query;
private int searchCategoryId;
private String searchCategoryName;
private List<Item> item;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private String title;
private String author;
private String cover;
private String isbn13;
private SubInfo subInfo;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class SubInfo {
private Packing packing;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class Packing {
private double sizeDepth;
}
}
}
}
@RestController
@RequiredArgsConstructor
@RequestMapping("/books")
public class BookController {
private final BookService bookService;
@PostMapping("")
@Operation(hidden = true)
public ResponseEntity<ApiResponse> fetchDataFromApi() {
bookService.fetchDataFromApi();
ApiResponse response = new ApiResponse<>(true, "책 데이터 DB 저장 완료");
return new ResponseEntity<>(response, HttpStatus.OK);
}
}