본문 바로가기
웹 개발 언어/JavaScript

영화진흥위원회 Open API를 이용한 JSON 실습

by 0725 2022. 4. 3.

Ajax

- 웹페이지 전체가 아닌 일부분 갱신할 수 있도록 서버에 request 해주는 기술이다

- 웹 페이지 전체를 응답받는게 아니라 해당하는 데이터만 주고 받을수있기때문에 자원과 시간을 아낄 수 있다

     -> 더 편리해보임

 

JSON

- key와 value로 구성된 가장 간단한 파일 포맷

 

영화진흥위원회에서 제공하고있는 OPEN API 서비스를 이용해서 JSON실습을 해보자!

 

https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do

 

영화진흥위원회 오픈API

OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.

www.kobis.or.kr

 

OPEN API를 클릭해서 들어가보면

 

가장 하단에 JSON 형식 데이터를 제공하는 링크가 있다

 

이 링크에 들어가면 이런 데이터가 나온다


이 데이터에서 원하는 데이터를 정제해보려고 한다

 

- JSON 데이터의 구조를 파악하기 위해서 콘솔창에 출력하면서 연습해보았다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>영화데이터 가져오기</h1>

    <button onclick="getData()">정보가져오기</button>

    <script>
        function getData(){
            $.ajax({
                // 1. 어디랑 통신 할건지 url
                url:"http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=f5eef3421c602c6cb7ea224104795888&targetDt=20120101",
                
                // 2. 성공시 실행할 로직
                success : function(data){
                    // 성공시 받아온 데이터는 매개변수에 자동으로 담긴다

                    // ajax는 통신하는 과정이 보이지 않기 때문에
                    // 꼭 alert 넣어서 확인 해준다!!
                    alert("통신 성공")
                    console.log(data)
                    console.log(data.boxOfficeResult)
                    
                    // '일별박스 오피스' 출력
                    console.log(data.boxOfficeResult.boxofficeType)
                    
                    // 영화 제목 출력
                    console.log(data.boxOfficeResult.dailyBoxOfficeList[0].movieNm)

                },

                // 3. 실패시 실행할 로직
                error:function(){
                    alert("통신 실패")
                }
            })
        }

    </script>
</body>
</html>
- console.log(data)

- console.log(data.boxOfficeResult)

data 중에서도 boxOfficeResult라는 object만 출력했다

이 object안에는 dailyBoxOfficeList라는 배열이 들어있는데 이 배열의 0번째에 있는 object를 열어보면 영화이름, 영화제목, 개봉일, 랭킹 등의 여러가지 정보가 key-value 의 형태로 담겨있는 것을 확인할 수 있다.

- console.log(data.boxOfficeResult.boxofficeType)

  console.log(data.boxOfficeResult.dailyBoxOfficeList[0].movieNm)


데이터가 어떤 구조로 담겨있는지 대충 파악이 되었으니 이번엔 table 형태에 가져온 데이터를 담아보았다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>영화데이터 가져오기</h1>

    <table border="1" id="start">
        <tr>
            <td>순위</td>
            <td>영화명</td>
            <td>개봉일</td>
        </tr>
    </table>

    <button onclick="getData()">정보가져오기</button>

    <script>
        function getData(){
            $.ajax({
                // 1. 어디랑 통신 할건지 url
                url:"http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=f5eef3421c602c6cb7ea224104795888&targetDt=20120101",
                
                // 2. 성공시 실행할 로직
                success : function(data){
                    for(i =0;i<data.boxOfficeResult.dailyBoxOfficeList.length;i++){
                    	let rank = data.boxOfficeResult.dailyBoxOfficeList[i].rank // 영화 순위
                    	let name = data.boxOfficeResult.dailyBoxOfficeList[i].movieNm // 영화 이름
                    	let open = data.boxOfficeResult.dailyBoxOfficeList[i].openDt // 개봉일
                    
                    	$("#start").append("<tr>"+"<td>"+rank+"</td>"+"<td>"+name+"</td>"+"<td>"+open+"</td>"+"</tr>")

                    	}
                },

                // 3. 실패시 실행할 로직
                error:function(){
                    alert("통신 실패")
                }
            })
        }

boxOfficeResult라는 배열에 영화 정보가 들어있기 때문에 이 배열의 길이만큼 for문을 반복시키고, 배열 요소에 있는 영화의 순위, 이름, 개봉일을 테이블 태그의 <tr>태그 안에 추가해주는 반복문을 작성했다.

 

실행 결과

정보 가져오기 버튼을 클릭하면 "통신 성공"이라는 알림창이 뜨고 영화 데이터가 웹에 table 형식으로 출력된다.

 

 

'웹 개발 언어 > JavaScript' 카테고리의 다른 글

Gson 라이브러리  (0) 2022.04.03
Ajax를 이용하여 아이디 중복 체크하기  (0) 2022.04.03
Ajax와 JSON  (0) 2022.04.03
jQuery 이용해서 이미지 움직이기!  (0) 2022.03.31
Javascript - jQuery방식  (0) 2022.03.30

댓글