API/실습

69. [ JAVA ] 공공데이터 포털 API 이용 : 영화 박스오피스순위 예시

천재단미 2025. 1. 13. 17:30
728x90
반응형

 

 

 

문제

Open API 실습

문제 1: 공공 데이터 포털의 대기오염 정보 조회

  • 목표: 특정 지역의 대기오염 정보를 출력하는 프로그램 작성.
  • API 예시: 한국환경공단_에어코리아 대기오염정보 API
  • 요구사항:
    1. 사용자가 입력한 지역(시군구)의 대기오염 정보를 조회하세요.
    2. 미세먼지(PM10), 초미세먼지(PM2.5), 오존 농도 등의 데이터를 출력하세요.
    3. 대기질 상태에 따라 "좋음", "보통", "나쁨"으로 상태를 분류하여 표시하세요.

문제 2: 도서관 정보 검색

  • 목표: 특정 지역의 공공 도서관 정보를 출력하는 프로그램 작성.
  • API 예시: 공공도서관 정보 API
  • 요구사항:
    1. 사용자가 입력한 지역명을 기준으로 도서관 목록을 검색하세요.
    2. 도서관 이름, 주소, 전화번호를 출력하세요.

문제 3: 버스 정류장 정보 조회

  • 목표: 특정 버스 정류장의 정보를 출력하는 프로그램 작성.
  • API 예시: 서울시 버스 정류소 정보 API
  • 요구사항:
    1. 정류소 ID 또는 정류소 이름을 입력받아 정류소 정보를 조회하세요.
    2. 현재 도착 예정인 버스 번호와 도착 시간을 출력하세요.

문제 4: 관광지 정보 조회

  • 목표: 특정 지역의 관광지 정보를 출력하는 프로그램 작성.
  • API 예시: 한국관광공사_국내 관광정보 API
  • 요구사항:
    1. 사용자가 입력한 지역명에 해당하는 관광지 목록을 출력하세요.
    2. 관광지 이름, 주소, 소개 정보를 표시하세요.

문제 5: 지하철 실시간 정보 조회

  • 목표: 서울 지하철의 실시간 열차 도착 정보를 출력하는 프로그램 작성.
  • API 예시: 서울교통공사_지하철 실시간 도착 정보 API
  • 요구사항:
    1. 사용자가 입력한 역 이름을 기준으로 실시간 도착 정보를 조회하세요.
    2. 상행선/하행선 정보와 도착 예정 시간, 열차 번호를 출력하세요.

문제 6: 국내 도로 교통 정보 제공

  • 목표: 실시간 교통 상황 정보를 출력하는 프로그램 작성.
  • API 예시: 국토교통부_도로교통정보 API
  • 요구사항:
    1. 특정 도로 또는 지역의 실시간 교통 혼잡도를 조회하세요.
    2. 혼잡도를 "원활", "보통", "정체"로 분류하여 사용자에게 표시하세요.

문제 7: 병원 정보 조회

  • 목표: 특정 지역의 병원 정보를 출력하는 프로그램 작성.
  • API 예시: 공공보건포털_병원 정보 API
  • 요구사항:
    1. 사용자가 입력한 지역명과 진료과목(예: 내과, 소아과 등)을 기준으로 병원 정보를 조회하세요.
    2. 병원 이름, 주소, 전화번호, 운영 시간을 출력하세요.

문제 8: 한국 주식 시장 정보 조회

  • 목표: 특정 주식 종목의 실시간 주가 정보를 출력하는 프로그램 작성.
  • API 예시: 한국거래소 Open API
  • 요구사항:
    1. 종목 코드를 입력받아 실시간 주가 정보를 조회하세요.
    2. 현재가, 고가, 저가, 거래량 정보를 출력하세요.

문제 9: 번역 API를 활용한 실시간 번역기 개발

  • 목표: 입력 텍스트를 원하는 언어로 번역하는 프로그램 작성.
  • API 예시: Google Translate API
  • 요구사항:
    1. 사용자가 번역할 텍스트와 대상 언어 코드를 입력하면 번역된 결과를 출력합니다.
    2. 원본 텍스트와 번역 결과를 JSON 파일로 저장하세요.

문제 10: 위치 기반 맛집 검색 서비스

  • 목표: 사용자의 현재 위치를 기반으로 주변 맛집 정보를 제공하는 프로그램 작성.
  • API 예시: Google Places API
  • 요구사항:
    1. 사용자의 위도와 경도를 입력받아 주변 맛집 정보를 검색하세요.
    2. 맛집 이름, 평점, 주소를 출력하세요.

문제 11: 사용자 맞춤 추천 시스템

  • 목표: 사용자의 관심사를 입력받아 관련 추천 데이터를 제공하는 프로그램 작성.
  • API 예시: Spotify API
  • 요구사항:
    1. 사용자에게 음악 장르를 입력받아 해당 장르의 인기 플레이리스트를 검색하세요.
    2. 플레이리스트 제목과 URL을 출력하세요.

문제 12: 영화 정보 검색 API 활용

  • 목표: 영화 제목으로 검색하여 관련 정보를 출력하는 프로그램 작성.
  • API 예시: OMDb API
  • 요구사항:
    1. 영화 제목을 입력받아 API를 호출합니다.
    2. 출력 내용에 영화 제목, 개봉 연도, 장르, 줄거리를 포함하세요.

문제 13: 날씨 API 활용

  • 목표: 특정 도시의 날씨 정보를 출력하는 프로그램 작성.
  • API 예시: OpenWeather
  • 요구사항:
    1. 사용자가 도시 이름을 입력하면 API를 호출하여 현재 날씨를 출력하세요.
    2. 날씨, 온도, 습도 등의 정보를 JSON에서 파싱하여 출력하세요.

문제 14: 환율 정보 API 활용

  • 목표: 특정 통화의 환율 정보를 출력하는 프로그램 작성.
  • API 예시: ExchangeRatesAPI
  • 요구사항:
    1. 기준 통화와 대상 통화를 입력받아 환율을 조회하세요.
    2. 환율과 함께 기준 통화에서 대상 통화로 환산된 금액을 출력하세요.

문제 1: 서울시 버스 정류장 정보 조회

  • 목표: 특정 지역의 버스 정류장 목록 출력.
  • API 예시: 서울 열린데이터 광장
  • 요구사항:
    1. 사용자가 입력한 지역명(예: 강남구)을 기준으로 버스 정류장 목록을 출력하세요.
    2. 정류장 이름과 정류장 ID를 함께 표시하세요.

문제 2: 공공도서관 정보 조회

  • 목표: 특정 지역의 공공 도서관 정보 출력.
  • API 예시: 공공데이터 포털
  • 요구사항:
    1. 지역명을 입력받아 해당 지역의 공공 도서관 목록을 출력하세요.
    2. 도서관 이름, 주소, 운영 시간을 표시하세요.

문제 3: 영화 박스오피스 순위 조회

  • 목표: 현재 박스오피스 순위를 출력.
  • API 예시: 영화진흥위원회
  • 요구사항:
    1. 오늘 날짜의 박스오피스 순위를 출력하세요.
    2. 순위, 영화 제목, 관객 수를 표시하세요.
    3. 추가적으로, 특정 영화 제목을 입력하면 상세 정보를 조회하세요.

문제 4: 대기오염 정보 조회

  • 목표: 특정 지역의 대기오염 상태 출력.
  • API 예시: 한국환경공단_에어코리아
  • 요구사항:
    1. 사용자에게 지역명을 입력받아 해당 지역의 미세먼지(PM10)와 초미세먼지(PM2.5) 농도를 출력하세요.
    2. 농도에 따라 "좋음", "보통", "나쁨"으로 상태를 표시하세요.

문제 5: 서울 지하철 실시간 도착 정보 조회

  • 목표: 특정 지하철역의 실시간 열차 도착 정보 출력.
  • API 예시: 서울 열린데이터 광장
  • 요구사항:
    1. 사용자에게 역 이름을 입력받아 해당 역의 실시간 열차 도착 정보를 조회하세요.
    2. 도착 예정 시간, 열차 번호, 상행/하행 정보를 출력하세요.

문제 6: 전국 교통사고 통계 조회

  • 목표: 특정 지역의 교통사고 통계 출력.
  • API 예시: 도로교통공단 TAAS
  • 요구사항:
    1. 사용자가 입력한 지역의 연간 교통사고 건수, 사망자 수, 부상자 수를 출력하세요.
    2. 데이터를 바탕으로 간단한 시각화를 추가하세요(예: 바 차트).

문제 7: 국내 관광지 검색 및 추천 서비스

  • 목표: 사용자의 입력에 따라 관광지를 추천하는 프로그램 작성.
  • API 예시: 한국관광공사
  • 요구사항:
    1. 사용자가 관심 있는 지역(예: 부산)을 입력하면 해당 지역의 관광지를 출력하세요.
    2. 관광지의 이름, 주소, 주요 설명을 표시하세요.
    3. 사용자가 선택한 관광지의 상세 정보를 추가로 제공하세요.

문제 8: 날씨 기반 추천 시스템

  • 목표: 실시간 날씨 정보를 기반으로 추천 활동 제공.
  • API 예시: 기상청 기상자료개방포털
  • 요구사항:
    1. 특정 지역의 현재 날씨를 조회하세요.
    2. 날씨 상태에 따라 추천 활동(예: 맑음 -> 야외 활동 추천, 비 -> 실내 활동 추천)을 제공하세요.
    3. 추천 활동과 관련된 장소 정보(예: 영화관, 공원 등)를 함께 출력하세요.

실습 가이드 (위 문제중 하나는 선택하여 API 구현하시오 )

  1. API 키 발급: 공공데이터 포털 또는 관련 기관에서 회원가입 후 API 키를 발급받으세요.
  2. 요청 방식 이해: 대부분의 API는 GET 또는 POST 요청을 사용하며, URL과 헤더 설정이 필요합니다.
  3. 에러 처리: 잘못된 입력 또는 API 호출 실패 시 적절한 에러 메시지를 반환하도록 구현하세요.
  4. 확장 가능성 고려: 단순 출력 외에 데이터를 저장하거나 시각화하는 기능을 추가해보세요.

 

풀이

 

68. [JAVA] 공공데이터 포털 API 이용 방법 : 영화 박스오피스순위

 

68. [JAVA] 공공데이터 포털 API 이용 방법 : 영화 박스오피스순위

공공데이터 포털 API 이용 방법공공데이터 포털 API는 다양한 데이터를 제공하여 개발자가 쉽게 활용할 수 있도록 합니다. Java를 사용해 공공데이터 포털 API를 이용하는 방법을 입니다.  1. 공공

danmi1109.tistory.com

 

문제 3: 영화 박스오피스 순위 조회

  • 목표: 현재 박스오피스 순위를 출력.
  • API 예시: 영화진흥위원회
  • 요구사항:
    1. 오늘 날짜의 박스오피스 순위를 출력하세요.
    2. 순위, 영화 제목, 관객 수를 표시하세요.
    3. 추가적으로, 특정 영화 제목을 입력하면 상세 정보를 조회하세요.

실습 가이드 (위 문제중 하나는 선택하여 API 구현하시오 )

  1. API 키 발급: 공공데이터 포털 또는 관련 기관에서 회원가입 후 API 키를 발급받으세요.
  2. 요청 방식 이해: 대부분의 API는 GET 또는 POST 요청을 사용하며, URL과 헤더 설정이 필요합니다.
  3. 에러 처리: 잘못된 입력 또는 API 호출 실패 시 적절한 에러 메시지를 반환하도록 구현하세요.
  4. 확장 가능성 고려: 단순 출력 외에 데이터를 저장하거나 시각화하는 기능을 추가해보세요.

 

Postman

 

1. 응답 예시 참고하여 포스트맨 테스트 진행 

 

 

 

intelliJ

 

 

1. mevn 동기화 진행 

 

 

 

 

 

2. application.yml 파일 생성 

spring:
  profiles:
    active: dev


movie:
  api:
    key: 발급키
    url: http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json

 

 

 

 

3. config 패키지 생성 

3-1. MovieConfig 클래스 생성 


@Configuration
public class MovieConfig {
    @Value("${movie.api.key}")
    public String apiKey;
    @Value("${movie.api.url}")
    public String url;
}

 

3-2. RestTemplateConfig 클래스 생성 

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

 

 

 

4. controller 패키지 생성 

4-1.  MovieController 클래스 생성 

 

    @GetMapping("/movies/rank")
    getMovies(@RequestParam("date") String date){
        movieService.getMovies(date);

    }

 

5. service 패키지 생성 

5-1.  MovieService 클래스 생성 

 

@Service
public class MovieService {

    getMovies(String date){

 

5-2.   요청 인터페이스 확인 

필수는 무조건 사용 , 다른것들은 API명세서 요청에 맞게 진행하면됩니다. 

 

@Service
public class MovieService {

    @Autowired
    MovieConfig movieConfig;

    getMovies(String date){
        // 영화진흥원 API 를 호출.
        // Uri 를 만든다.
        URI uri = UriComponentsBuilder
                .fromUriString(movieConfig.url)
                .queryParam("key", movieConfig.apiKey)
                .queryParam("targetDt", date)
                .queryParam("multiMovieYn", "N")
                .build()
                .encode()
                .toUri();

        // 헤더 셋팅은 없으니까 헤더는 셋팅 안한다.
        HttpHeaders headers = new HttpHeaders();

 

6. dto 패키지 생성

응답구조를 참조하여 작성합니다. 

 

6-1. BoxOfficeResult  클래스 생성 

@Data
@NoArgsConstructor
@AllArgsConstructor
public class DailyBoxOffice {
    public String rnum;
    public String rank;
    public String rankInten;
    public String rankOldAndNew;
    public String movieCd;
    public String movieNm;
    public String openDt;
    public String salesAmt;
    public String salesShare;
    public String salesInten;
    public String salesChange;
    public String salesAcc;
    public String audiCnt;
    public String audiInten;
    public String audiChange;
    public String audiAcc;
    public String scrnCnt;
    public String showCnt;
}


6-2. Movie 클래스 생성 

필요한 정보만 선택하여 클래스에 작성합니다. 

 

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Movie {
    public String rank;
    public String rankInten;
    public String movieCd;
    public String movieName;
    public String openDate;
    public String salesAcc;
    public String audiAcc;
}



 

728x90
반응형
home top bottom
}