본문 바로가기

[OpenAPI] 알라딘 OpenAPI 중 검색API 이용

by ohojee 2023. 9. 19.

알라딘 openapi의 사용 명세서는 아래 페이지에서 볼 수 있다.

https://blog.aladin.co.kr/openapi/popup/6695306

 

[알라딘서재]OpenAPI 안내

OpenAPI 안내 (최종 수정일 : 2022.7.13) OpenAPI는 크게 3가지로 나눠집니다. (1) 검색API (2) 상품API (하나의 상품을 열람하는 API) (3) 상품 리스트 API (베스트셀러 등 각종 상품 리스트 API) 상품API는 하나의

blog.aladin.co.kr

검색api 뿐만 아니라 상품api, 상품리스트api도 이용할 수 있다. 링크를 들어가 이용메뉴얼을 보면 요청 api와 요청가능한 옵션들이 나와있다.

도서를 검색 페이지를 만들던 중 카테고리로 검색할 수 있는 옵션을 발견했다.

처음에는 카테고리 하나씩 검색하는 기능을 구현하다가 알라딘 홈페이지에서는 책을 검색하고 여러가지 카테고리를 함께 검색할 수 있다는 것을 발견했다.

검색하고 싶은 분야를 선택한 후, 적용버튼을 누르면 링크에 '&'로 묶인 많은 옵션들이 추가된다. 그래서 UI도 여러 개 선택이 가능하도록 체크박스로 바꿔놓았다.

그리고 나서 알라딘 홈페이지에서 카테고리를 지정한 후 검색해보았다. 아래는 그 검색링크이다.

https://www.aladin.co.kr/search/wsearchresult.aspx?SearchTarget=All&KeyWord=%EB%AA%A8%EC%88%9C&KeyRecentPublish=0&OutStock=0&ViewType=Detail&SortOrder=11&CustReviewCount=0&CustReviewRank=0&KeyFullWord=%EB%AA%A8%EC%88%9C&KeyLastWord=%EB%AA%A8%EC%88%9C&CategorySearch=987%2C798%2C0%400&chkKeyTitle=&chkKeyAuthor=&chkKeyPublisher=&chkKeyISBN=&chkKeyTag=&chkKeyTOC=&chkKeySubject=&ViewRowCount=25&SuggestKeyWord=

이 긴 링크들 중에 나는 CategorySearch=987%2C798%2C0%400 이 부분에 집중했다.

과학의 코드는 987, 사회과학의 코드는 798이다. 그럼 그 사이에 있는 %2C는 뭘까해서 검색해본 결과 아스키코드상의 2C는 ','라고 한다. 0은 전체결과를 나타내주는 코드인데 왜 들어갔는지 모르겠고, %400역시도 %40에 무슨 의미가 있을까 싶어 아스키코드 40을 봤더니 '@'라고 한다. 왜 들어갔을까? 아무튼 그래서 아 여러개를 검색하고 싶으면 ','로 묶으면 되겠구나 해서 api를 요청해보았다.

const result = await axios.get(`ttb/api/ItemSearch.aspx?ttbkey=${process.env.REACT_APP_TTBKEY}&Query=모순
            &Cover=Big&QueryType=Title&MaxResults=${maxResults}&Sort=${orderOptionsSelect[orderOptions.indexOf(order)]}&start=${currentArray + 1}
            &SearchTarget=${bookOptionsSelect[bookOptions.indexOf(bookType)]}&CategoryId=987,798&output=js&Version=20131101`);

하지만 

CategoryId=987,798

이런 식으로 요청을 보내면 아래와 같이 ','는 처음부터 없었다는 듯, 묶여서 검색된다.

그래서 아래와 같은 방법도 시도해보았다.

CategoryId=789%2C978
CategoryId=789&CategoryId=978

하지만 역시 묶여서 검색되었다. 여러 카테고리의 검색결과를 보여주고는 싶은데 아예 유저가 선택한 카테고리대로 각각 요청을 보낸 후 합쳐야하나?라고도 생각했지만 그러면 너무 많은 요청이 보내질 것 같아 그 방법은 접어두었다.

 

방법이 있는데 못 찾는건가 싶어서 알라딘 openapi쪽에 문의 메일을 보내보았다.

이러한 답변이 왔다. 알라딘 홈페이지에서는 가능해서 될 줄 알았는데 openapi에는 그런 기능이 없다고 한다. 

아쉬웠지만 이제라도 안 되는걸 알아서 다행이라고 생각하고, 나는 다시 카테고리가 단일 선택되도록 코드를 수정하러 가야겠다. 

 

 

참고 자료

https://stackoverflow.com/questions/6182356/what-is-2c-in-a-url

댓글