Aladin 클래스는 알라딘 TTB(Open API)를 사용하기 위한 클라이언트를 초기화합니다. 생성자에는 API 인증을 위한 키와 (선택적으로)제휴사 ID를 전달해야 합니다.
Aladin 클래스는 알라딘 TTB(Open API)를 사용하기 위한 클라이언트를 초기화합니다. 생성자에는 API 인증을 위한 키와(선택적으로) 제휴사 ID를 전달해야 합니다.
new Aladin(config: { ttbKey: string; partner?: string });| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
ttbKey |
string |
✅ 필수 | 알라딘에서 발급받은 TTB API 키입니다. API 요청의 인증에 사용됩니다. | "ttbexamplekey" |
partner |
string? |
❌ 선택 | 제휴사 ID. 특정 파트너 연동 시 필요한 경우가 있으며 일반 사용자에게는 불필요할 수 있습니다. | "myPartnerId" |
ttbKey가 제공되지 않으면 예외가 발생합니다:
new Aladin({}) // ❌ Error: API key (ttbkey) is requiredAPI 키를 동적으로 변경합니다. 주로 다중 키 지원 또는 런타임 키 갱신 시 사용됩니다.
| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
ttbKey |
string |
✅ 필수 | 새로 설정할 TTB API 키 | "newKey123" |
- 변경된 인스턴스를 반환하므로 체이닝이 가능합니다.
- 빈 문자열이나 falsy 값이 주어질 경우 예외 발생
aladin.setTtbKey("newKey").searchItems({ query: "..." })제휴사 ID를 동적으로 설정합니다.
| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
partner |
string |
✅ 필수 | 설정할 제휴사 ID | "myPartnerId" |
- 변경된 인스턴스를 반환하므로 체이닝이 가능합니다.
- 빈 문자열 등 falsy 값이 주어질 경우 예외 발생
aladin.setPartner("myPartnerId").lookupItem({ itemId: 123 })알라딘 상품을 키워드로 검색합니다. ItemSearch.aspx API에 대응하는 메서드입니다.
searchItems(request: SearchItemRequest): Promise<AladinClientResponse<SearchItemResponse, AladinError>>| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
query |
string |
✅ 필수 | 검색 키워드입니다. | "Harry Potter" |
queryType |
string |
❌ 선택 | 검색 방식 지정. 기본값은 "Keyword"입니다. 가능한 값: "Title", "Author", "Publisher" 등 |
"Title" |
searchTarget |
string |
❌ 선택 | 검색 대상. 가능한 값: "Book", "Music", "DVD" 등 |
"Book" |
start |
number |
❌ 선택 | 검색 결과 시작 위치 (페이지네이션). 기본값은 1입니다. | 1 |
maxResults |
number |
❌ 선택 | 최대 반환 항목 수. 기본값은 10이며, 최대 50까지 설정 가능합니다. | 20 |
sort |
string |
❌ 선택 | 정렬 기준. 가능한 값: "Accuracy", "PublishTime", "SalesPoint", "CustomerRating" 등 |
"PublishTime" |
cover |
string |
❌ 선택 | 커버 이미지 크기. 가능한 값: "Big", "Mid", "Small" |
"Big" |
categoryId |
number |
❌ 선택 | 특정 카테고리 ID를 지정합니다. | 50963 |
partner |
string |
❌ 선택 | 제휴사 ID입니다. | "myPartnerId" |
includeKey |
string |
❌ 선택 | 결과에 포함할 추가 키를 지정합니다. | "reviewRank" |
version |
string |
❌ 선택 | API 버전입니다. 기본값은 "20131101"입니다. |
"20131101" |
outOfStockFilter |
number (0 또는 1) |
❌ 선택 | 품절 도서 제외 여부를 설정합니다. 1로 설정하면 품절 도서를 제외합니다. | 1 |
recentPublishFilter |
number |
❌ 선택 | 최근 출간 도서만 포함합니다. 가능한 값: 30, 90, 180 (일 단위) |
90 |
optResult |
string[] |
❌ 선택 | 추가 옵션 결과를 지정합니다. 가능한 값: "ebookList", "usedList" 등 |
["usedList"] |
success: true인 경우,data필드에 검색 결과가 포함됩니다.success: false인 경우,error객체가 포함됩니다.
query가 없으면ValidationError가 반환됩니다.- 네트워크 오류, 파싱 오류, API 오류 발생 시 각각 대응하는
AladinErrorTypes으로 반환됩니다.
const result = await aladin.searchItems({ query: "Harry Potter", maxResults: 5 });
if (result.success) {
console.log(result.data);
} else {
console.error(result.error.message);
}특정 기준에 따라 상품 리스트를 조회합니다. ItemList.aspx API에 대응하는 메서드입니다. 신간, 베스트셀러, 유아 추천 도서 등 고정된 목록을 가져올 때 사용됩니다.
listItems(request: ListItemRequest): Promise<AladinClientResponse<ListItemResponse<ListItem>, AladinError>>| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
queryType |
string |
✅ 필수 | 조회할 리스트의 유형. 가능한 값: "ItemNewSpecial", "Bestseller", "BlogBest" 등 |
"ItemNewAll" |
categoryId |
number |
✅ 조건부 | 카테고리 ID. searchTarget가 없을 경우 필수입니다. |
50963 |
searchTarget |
string |
✅ 조건부 | 대상 자료 유형. categoryId가 없을 경우 필수입니다. 가능 값: "Book", "Music" 등 |
"Book" |
subSearchTarget |
string |
❌ 선택 | 세부 자료 유형 (e.g. "Foreign" 외국도서 등) |
"Foreign" |
start |
number |
❌ 선택 | 검색 결과 시작 위치 (기본값: 1) | 1 |
maxResults |
number |
❌ 선택 | 최대 반환 항목 수 (기본값: 10, 최대: 50) | 20 |
cover |
string |
❌ 선택 | 커버 이미지 크기. "Big", "Mid", "Small" 중 선택 |
"Mid" |
partner |
string |
❌ 선택 | 제휴사 ID. | "myPartnerId" |
includeKey |
string |
❌ 선택 | 결과에 포함할 추가 키 | "reviewRank" |
version |
string |
❌ 선택 | API 버전. 기본값은 "20131101" |
"20131101" |
outOfStockFilter |
number (0 또는 1) |
❌ 선택 | 품절 도서 제외 여부 | 1 |
year |
number |
❌ 조건부 | QueryType=Bestseller인 경우 주간별 조회에 사용. year, month, week 같이 사용되어야 함 | 2024 |
month |
number |
❌ 조건부 | QueryType=Bestseller인 경우 주간별 조회에 사용. year, month, week 같이 사용되어야 함 | 4 |
week |
number |
❌ 조건부 | QueryType=Bestseller인 경우 주간별 조회에 사용. year, month, week 같이 사용되어야 함 (1~5) | 2 |
optResult |
string[] |
❌ 선택 | 추가 옵션 결과 (ebookList, usedList, 등) |
["usedList"] |
🔎
queryType에 따라year,month,week의 요구 여부가 달라지므로 주의 필요. 예:"Bestseller"는year/month/week필수.
success: true이면data필드에 상품 리스트가 포함됩니다.success: false이면error객체가 포함됩니다.
queryType이 없으면ValidationError발생categoryId와searchTarget중 하나라도 없으면ValidationError- API 에러, 네트워크 오류, 파싱 오류 시 각각 해당 에러 타입 반환
const result = await aladin.listItems({
queryType: "ItemNewAll",
categoryId: 50963,
maxResults: 5
});
if (result.success) {
console.log(result.data);
} else {
console.error(result.error.message);
}상품 ID를 기반으로 상세 정보를 조회합니다. ItemLookUp.aspx API에 대응하는 메서드입니다.
lookupItem(request: LookupItemRequest): Promise<AladinClientResponse<LookupItemResponse, AladinError>>| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
itemId |
number|string |
✅ 필수 | 조회할 상품의 ID입니다. itemIdType과 함께 사용됩니다. |
12345678 or '12345678' |
itemIdType |
string |
❌ 선택 | ID의 종류. 기본값은 "ISBN"이며, "ItemId"도 가능 |
"ItemId" |
cover |
string |
❌ 선택 | 커버 이미지 크기. "Big", "Mid", "Small" 중 선택 |
"Big" |
partner |
string |
❌ 선택 | 제휴사 ID. 클라이언트에서 기본값을 설정했어도 여기 값이 있으면 우선 적용됩니다. | "myPartnerId" |
includeKey |
string |
❌ 선택 | 결과에 포함할 추가 필드. 예: "usedList", "ebookList" 등 |
"usedList" |
offCode |
string |
❌ 선택 | 중고매장 코드. 지정 시 해당 매장에서의 중고 여부 확인 가능 | "J1311" |
optResult |
string[] |
❌ 선택 | 확장 결과를 지정합니다. | ["ebookList", "usedList"] |
version |
string |
❌ 선택 | API 버전. 기본값은 "20131101" |
"20131101" |
🔎
itemIdType을 지정하지 않으면 기본값은"ISBN"으로 간주됩니다. 그러나 숫자 ID를 사용할 경우 반드시"ItemId"로 지정해야 정확히 동작합니다.
success: true이면data필드에 해당 상품의 상세 정보가 포함됩니다.success: false이면error객체가 포함됩니다.
itemId가 없으면ValidationError발생- 알라딘 측 API 에러 또는 존재하지 않는 ID일 경우
ApiError발생 - 네트워크 오류, 파싱 오류 발생 시 각각 해당 오류 타입으로 반환
const result = await aladin.lookupItem({
itemId: 343667067,
itemIdType: "ItemId",
includeKey: "usedList"
});
if (result.success) {
console.log(result.data);
} else {
console.error(result.error.message);
}특정 상품의 중고 보유 매장 정보를 조회합니다. ItemOffStoreList.aspx API에 대응하는 메서드입니다.
listItemOffStore(request: ListItemOffStoreRequest): Promise<AladinClientResponse<ListItemOffStoreResponse, AladinError>>| 이름 | 타입 | 필수 여부 | 설명 | 예시 |
|---|---|---|---|---|
itemId |
number |
✅ 필수 | 조회할 상품의 ID. 보통 ItemId 타입으로 사용됩니다. |
343667067 |
itemIdType |
string |
❌ 선택 | ID의 종류. 기본값은 "ISBN". 숫자 기반이면 "ItemId" 지정 필요 |
"ItemId" |
success: true이면data필드에 중고 보유 매장 정보가 포함됩니다.success: false이면error객체가 포함됩니다.
itemId가 없으면ValidationError발생- 유효하지 않은
itemId일 경우ApiError반환 - 네트워크 오류, 파싱 오류가 발생할 경우 각각 해당 오류 타입으로 반환됨
const result = await aladin.listItemOffStore({
itemId: 343667067,
itemIdType: "ItemId"
});
if (result.success) {
console.log(result.data);
} else {
console.error(result.error.message);
}모든 메서드는 다음과 같은 공통 구조의 Promise를 반환합니다:
type AladinClientResponse<T, E = AladinError> =
| { success: true; data: T }
| { success: false; error: E }| 필드 | 타입 | 설명 |
|---|---|---|
data |
T |
각 API 응답에 해당하는 실제 데이터입니다. |
예시:
{
success: true,
data: {
item: [...],
totalResults: 30,
...
}
}| 필드 | 타입 | 설명 |
|---|---|---|
error |
AladinError |
오류 정보가 담긴 객체입니다. 오류 타입별로 type, message, raw 등을 포함할 수 있습니다. |
예시:
{
success: false,
error: {
type: "ApiError",
message: "Error: 110 Invalid TTBKey",
raw: { errorCode: 110, errorMessage: "Invalid TTBKey" }
}
}type AladinErrorTypes =
| "ValidationError" // 입력값 누락, 잘못된 파라미터
| "NetworkError" // fetch 실패 등 네트워크 문제
| "ParseError" // JSON 파싱 실패
| "ApiError"; // 알라딘 서버가 반환한 오류
interface AladinError {
type: AladinErrorTypes;
message: string;
raw?: unknown;
}| 필드 | 타입 | 설명 | 예시 |
|---|---|---|---|
type |
"ValidationError""NetworkError""ParseError""ApiError" 등 |
오류의 유형을 나타냅니다. 오류의 발생 원인을 분류하는 데 사용됩니다. | "ApiError" |
message |
string |
사용자 또는 개발자가 읽을 수 있는 오류 메시지입니다. | "Query is required""Invalid TTBKey" |
raw |
unknown |
오류의 원시 데이터입니다. 에러 종류에 따라 없거나, Error 객체, API 오류의 경우 응답 객체 등이 담깁니다. |
{ errorCode: 110, errorMessage: "Invalid TTBKey" } |