회사에 입사한 지 6개월 차가 되면서 고객사 유지보수 , 외부 협력사와의 추가개발 등 인수인계도 받고 업무를 맡아 보내고 있는 와중에 회사 복지 중에 무료 도서 복지를 정말 잘 사용하고 있었다.
하지만 사내홈페이지에서 도서를 신청할 때마다 하단의 사진과 같이 도서명 / 출판사 / 저자 / 내용(목차) 를 필수로 입력해야 하는데 이 부분을 도서 사이트 ex) yes24 , 교보 , 알라딘 등에서 하나씩 치는 게 번거롭다는 생각을 하고 있었다.

취업 전 프로젝트로 도서 관련 웹사이트를 구현 했었는데 그때는 일정 때문에 구현하지 못한 openAPI ISBN 검색으로 도서 데이터 뽑아오는 부분이 생각이 났다. 마침 화면단에서 자바스크립트가 부족하다는 느낌을 계속 받았는데 이 기능을 구현해보면서 자바스크립트 공부에도 많은 도움이 될 거 같아 퇴근 후 내 로컬에서 먼저 open API 연동을 시작했다. 처음 이 생각을 하고 구현하기로 마음을 먹었을 때 비록 동료분들한테 많은 영향을 주는 기능개선은 아니지만 좋은 영향을 끼칠 수 있겠다는 생각을 하니 설레고 기분 좋게 기능 구현을 해볼 수 있었다.

구현하며 부딪혔던 문제들
- naverAPI(타사 openAPI) x
- 처음에는 더 대중적이고 api가이드 등 접근성이 좋을 거 라 생각하여 naverAPI로 구현한 후 대표님께 설명드리며 보여드렸는데 회사에서는 타사 api보다 공공데이터 api를 사용해야 한다는 말씀에 공공 데이터 openAPI를 찾아 다시 구현함
- 인코딩 문제로 한글깨짐
- response로 받아온 데이터가 한글이 깨져서 나오는 현상이 발생하여 데이터를 받아 올 때 해당 .txt 데이터가 UTF-8 인코딩 파일이라 내 이클립스 기본 디코딩이 ms949로 설정이 되어있어 한글이 꺠지는 원인을 찾았고 애초에 해당 데이터를 받아 올 때 utf-8로 직접 인코딩 하여 가져옴으로써 해결하였다. 코드 올림
// utf-8로 디코딩하여 받아옴
InputStreamReader streamReader = new InputStreamReader(body,"utf-8");
try (BufferedReader lineReader = new BufferedReader(streamReader)) {
StringBuilder responseBody = new StringBuilder();
String line;
while((line = lineReader.readLine()) != null) {
responseBody.append(line);
System.out.println("readBody로 받아오는 데이터 = " + line);
}
return responseBody.toString();
} catch(IOException e) {
throw new RuntimeException("API 응답을 읽는 데 실패했습니다.",e);
}
3. 공공데이터 openAPI isbn 데이터 요청 시 목차 데이터가 10개중 7개 확률로 비어있음
- 이 부분은 내가 따로 해결 할 수 없어 대표님과의 미팅 후 isbn 조회시 목차 데이터는 빼고 자동으로 넣어주기로 결정하게 되었습니다.
'실무 경험' 카테고리의 다른 글
| [실무 경험] 단건으로만 처리 되는 로직을 다건 처리 로직으로 추가 개발하며 (0) | 2023.05.12 |
|---|