
response.getBody().get("item")이 null이어서 저장 로직이 건너뛰었을 가능성item은 존재하나 []인 경우 (items.isEmpty())ttbkey / QueryType / CategoryId 조합Bestseller는 모든 카테고리에 대해 응답을 주지 않을 수 있음에세이, SF는 ItemNewSpecial은 가능해도 Bestseller는 없음
while (true) {
String url = String.format(
"http://www.aladin.co.kr/ttb/api/ItemList.aspx?ttbkey=%s&QueryType=Bestseller&MaxResults=100&start=%d&SearchTarget=Book&output=js&CategoryId=%d",
ttbKey, page, categoryId
);
//디버깅용 코드
System.out.println("▶ API 호출 URL: " + url);
try {
ResponseEntity<Map> response = restTemplate.getForEntity(url, Map.class);
List<Map<String, Object>> items = (List<Map<String, Object>>) response.getBody().get("item");
▶ API 호출 URL: http://www.aladin.co.kr/ttb/api/ItemList.aspx?ttbkey=ttbsally...&QueryType=ItemNewSpecial&MaxResults=100&start=1&SearchTarget=Book&output=js&CategoryId=50917
ttbkey= 부분이 비어 있음 → 키 주입 안됨→ 이건 잘됨!

try {
ResponseEntity<Map> response = restTemplate.getForEntity(url, Map.class);
// [2단계] API 응답 본문 로그 출력
System.out.println("▶ API 응답 내용:");
System.out.println(response.getBody());
List<Map<String, Object>> items = (List<Map<String, Object>>) response.getBody().get("item");
{
"item": [
{ "title": "책1", "author": "...", ... },
...
],
...
}
{ "errorCode": "InvalidTTBKey", "errorMessage": "잘못된 키입니다." }

QueryType=Bestseller or ItemNewSpecial일 때 특정 카테고리에서 제대로 작동하지 않거나,쿼리에 필요한 조건이 빠졌을 때 발생
URL을
http://www.aladin.co.kr/ttb/api/ItemList.aspx?ttbkey=%s&QueryType=Bestseller&MaxResults=100&start=%d&SearchTarget=Book&output=js&CategoryId=%d&Version=20131101이걸로 바꿔주니까 저장됨!
기존에는 Version 부분이 없었는데 알라딘 오픈 API 에 필수값이었다..그러니 안되지 어쨋든 해결!