상세 컨텐츠

본문 제목

ISBN으로 책정보 읽어오기 - Naver api

IT이야기

by 반디날다 2023. 2. 22. 10:29

본문

ISBN으로 도서목록을 검색하기위한 방법을 찾던 중  NAVER에서 제공되는 open api가 있어서 활용하기로 했다. 

open API를 활용하기 위해서는 네이버에 사용신청을 먼저 해야 한다. 

1. 네이버 개발자 센터에 애플리케이션 등록 Open API 사용신청

1) 네이버 개발자 센터 접속

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

2) open Api 이용신청

Products > 서비스 API > 검색 > 오픈 API 이용 신청을 클릭

  1. 애플리케이션 이름 : 사용자에게 표시되는 이름
  2. 사용 API : 검색 을 선택
  3. 비로그인 오픈API 서비스 환경 : 특정 URL이 없다면 http://localhost.com을을 입력한다.

그러면 ID와 PassWord가 부여된다. 

별다른 액션이 없어서 안된줄 알고 여러번 했더니 여러개가 생겼다. ㅠㅠ

3) 생성 된 Api 확인하는 방법

Application > 내 애플리케이션 에서 확인한다. 

 

4) open Api 활용방법

open Api활용방법은 아래 링크에 들어가면 자세하게 볼 수 있다. 

Documents > 서비스API > 검색 

https://developers.naver.com/docs/serviceapi/search/book/book.md#%EC%B1%85

 

검색 > 책 - Search API

검색 > 책 책 검색 개요 개요 검색 API와 책 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API입니다.

developers.naver.com

 

2. JSP 만들기

<%@ page import = "org.apache.commons.logging.*" %>
<%@ page import = "java.util.*" %>
<%@ page import = "java.sql.*" %>
<%@ page import = "java.io.*" %>
<%@ page import = "java.net.*" %>
<%@ page contentType = "text/xml; charset=UTF-8" %>
<%@ include file="../connection_edu.jsp" %>
<%!
private static String get(String apiUrl, Map<String, String> requestHeaders){
    HttpURLConnection con = connect(apiUrl);
    try {
        con.setRequestMethod("GET");
        for(Map.Entry<String, String> header :requestHeaders.entrySet()) {
            con.setRequestProperty(header.getKey(), header.getValue());
        }

        int responseCode = con.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
            return readBody(con.getInputStream());
        } else { // 오류 발생
            return readBody(con.getErrorStream());
        }
    } catch (IOException e) {
        throw new RuntimeException("API 요청과 응답 실패", e);
    } finally {
        con.disconnect();
    }
}
%>
<%!
private static HttpURLConnection connect(String apiUrl){
    try {
        URL url = new URL(apiUrl);
       return (HttpURLConnection)url.openConnection();
    } catch (MalformedURLException e) {
        throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
    } catch (IOException e) {
        throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
    }
}
%>

<%!
private static String readBody(InputStream body){
    InputStreamReader streamReader = new InputStreamReader(body);


    try (BufferedReader lineReader = new BufferedReader(streamReader)) {
        StringBuilder responseBody = new StringBuilder();


        String line;
        while ((line = lineReader.readLine()) != null) {
            responseBody.append(line);
        }


        return responseBody.toString();
    } catch (IOException e) {
        throw new RuntimeException("API 응답을 읽는 데 실패했습니다.", e);
    }
}
%>

<%
	String clientId = "클라이언트 아이디 값";
	String clientSecret = "클라이언트 시크릿 값";
	
	String apiURL = "https://openapi.naver.com/v1/search/book_adv.json?d_isbn=9791155855089&display=10&start=1";
	
    Map<String, String> requestHeaders = new HashMap<>();
    requestHeaders.put("X-Naver-Client-Id", clientId);
    requestHeaders.put("X-Naver-Client-Secret", clientSecret);
    String responseBody = get(apiURL,requestHeaders);


    System.out.println(responseBody);   
   

%>

결과값 

{	"lastBuildDate":"Wed, 22 Feb 2023 10:27:37 +0900",	"total":1,	"start":1,	"display":1,	"items":[		{			"title":"가가 가라니까! (갈매기 선생 서상국의 좌충우돌 인생드라마)",			"link":"https:\/\/search.shopping.naver.com\/book\/catalog\/32455926266",			"image":"https:\/\/shopping-phinf.pstatic.net\/main_3245592\/32455926266.20221230075058.jpg",			"author":"서상국",			"discount":"13500",			"publisher":"북랩",			"pubdate":"20150312",			"isbn":"9791155855089",			"description":"일명 ‘갈매기 선생’으로 불리며 학생들의 인기를 독차지한\n경상도 토박이 교사 서상국의 남다른 교육 이야기\n\n이 책은 『산에 갔다 첩하나 달고 왔네』, 『나는 호박꽃이고 싶다』의 저자 서상국의 세 번째 에세이집이다. 경상도 토박이 교사인 저자가 경기도로 발령받으면서 생긴 에피소드들을 생생하게 담았다. 제목 ‘가가 가라니까!’는 ‘그 사람이 맞습니다.’란 뜻의 경상도 사투리. 학생들은 어느 날 저자에게서 들은 그 말을 재미있다는 듯 따라했고, 지금은 애칭으로 굳어졌다.\n\n그렇다고 이 책을 사투리 우스갯거리만 가득한 책으로 넘겨짚어서는 안 된다. 이 책에는 꽃씨를 심어 생명의 소중함을 가르치고 잘못한 일을 따끔하게 혼낼 줄 아는 참 선생의 모습이 담겨 있다. 졸업한 학생들이 학교로 찾아와 ‘혼내주셔서 고맙습니다.’라고 인사하는 풍경은 오랫동안 잊고 있던 아름다운 풍경이다."		}	]}

 

'IT이야기' 카테고리의 다른 글

[JAVA] JSON 파싱하기  (0) 2023.02.22
정규표현식 (RegExp) - 퍼옴  (0) 2023.01.16
[eclipse] JDK 경로 오류 발생  (0) 2023.01.10
ChatGPT  (0) 2023.01.02

관련글 더보기