강좌 Course 2. Part 4. ch3 요약
서버에 URL을 통해 요청을 보내고, 서버에서 응답을 받아오는 과정을 REST라고 한다. 카카오 책 REST API를 사용하여 책 목록을 PDF로 작성하는 미니프로젝트를 만들어 보자.
필요한 라이브러리는 다음과 같다.
- HTTP 요청 라이브러리: OkHttp, Apache HttpClient, ...
- JSON 파싱 라이브러리: Jackson, Gson, ...
- PDF 생성 라이브러리: iText, Apache PDFBox, ...
또, Kakao 개발자사이트에서 API 키를 먼저 발급받아야 한다. 로그인 후 내 어플리케이션에 들어가서 어플리케이션을 추가하면 REST API 키를 발급받을 수 있다.
카카오 개발자 사이트에서 검색 API 문서(링크)를 보면, 카테고리에 REST API가 있다. 검색 요청과 응답의 예시가 나와있어 이를 참고하여 코드를 작성하였다.
카카오 책 REST API에 도서제목을 입력하면 해당 제목의 책을 검색하여 도서 정보를 추출한 후, PDF 파일에 제목 ,저자, 출판사, 책 이미지를 저장하는 것을 목표로 한다. 반려동물 MVC와 마찬가지로 DB나 따로 프론트를 구현하지 않고 콘솔 환경에서 실행한다.
PdfGenerator 작성 중, createFont()가 자꾸 빨간 줄이 쳐졌다. 어제 사용한 버전은 7.1.8버전이었고 문제없이 실행되었는데, 오늘 새로 프로젝트를 생성하면서 7.2.4로 의존성을 추가했더니 발생한 오류였다.
(🔼7.1.18 버전) (🔼7.2.4 버전)
버전이 달라져서 발생한 오류로 예상하고 버전을 낮추었더니 빨간 줄이 사라졌다. 7.1.18버전에서도 createFont()에 deprecated한 메서드라고 계속 노란 줄이 쳐졌던 것이 그 뒤로는 아예 달라진 것 같다. 일단은 프로젝트 완성을 위해 이대로 작성하고, 새로 업데이트 된 createFont()는 어떻게 쓰는지도 알아봐야 할 것 같다.
다 됐다 하고 실행해보았더니 띠용.
링크를 눌러보았더니 뜬 에러 메시지: {"errorType":"AccessDeniedError","message":"cannot find Authorization : KakaoAK header"}
알고보니 헤더에 Authorization을 추가할 때 "KakaoAK" 뒤에 띄어쓰기가 있었다. 띄어쓰기를 누락하고 API_KEY를 붙여서 401 오류가 발생한 것이었다. 띄어쓰기를 추가하여 제대로 실행되는 것을 확인하였다!
다시 코드를 둘러보니 빨간 줄이 하나 눈에 띄었다. okhttp3에서 Request.Builder를 제대로 import 했는데도..! "Usage of Kotlin internal declarations from Java" 라는데 IDE에서 자체적으로 교정이 안되는 걸 보아 일단 구글에 검색했다.
스택오버플로우와 JetBrains 답변을 참고하였더니, Kotlin 라이브러리인 okhttp를 Java에서 사용하면서 IDE 내부적으로 오류가 발생하는 것 같다. IDEA 얼티밋 버전에서는 2023년 3월 기준으로 해결되었다는데, 나는 커뮤니티 버전이라 오류가 나는 것 같다. 해결 방법으로는 ide의 내부 inspection 레벨을 낮추거나, 아예 비활성화하는 방법이 있다고 한다.
참고: JetBrains configuring-inspection-severities
Ctrl+Alt+S를 눌러서 설정에 들어가면 수정할 수 있다.