알라딘 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
'웹' 카테고리의 다른 글
[js] 특정 문자열 위치 여러개 찾기(indexOf 활용) (0) | 2023.09.05 |
---|---|
[nodejs/error][mongodb] TypeError: Converting circular structure to JSON, mongodb aggregate (0) | 2023.08.29 |
[nginx] 설정 확인 (0) | 2023.05.23 |
[nginx / 에러] Failed to start A high performance web server and a reverse proxy server. (0) | 2023.05.22 |
[mysql] mysql 워크벤치 강제종료 (0) | 2023.05.18 |
댓글