본문 바로가기

spring(스프링)

네이버 영화 검색 오픈 api 사용 방법(with spring)

반응형

오픈 API(application programming interface) 사용하는 이유


오픈 API는 말그대로 공개된 API 입니다 

오픈 API를 사용하는 이유는 오픈 API를 사용함으로써 많은 시간과 수고를 줄일 수 있는데요 

한가지 예로 제가 지금부터 설명드리려고 하는 네이버 영화 검색 오픈API를 직접 등록하고 사용하려고 한다면 어떻게 해야할까요 

하나하나 영화의 정보를 찾아서 db에 등록을 해야 할 것입니다 

영화는 역사가 아주 깊은 문화이므로 만약 수기로 작성한다면 수십만의 데이터들을 작성해야겠죠 

또 이 과정에서 누락되는 정보나 오류가 생길 가능성이 아주 큽니다 

오픈 API를 사용 하면 검증된 데이터를 누락이나 오류 없이 사용 할 수 있으니 시간을 많이 줄여주는 것이죠 

 

네이버 영화 검색 오픈 API 시작하기 


 

 

https://developers.naver.com/docs/search/movie/

 

검색 API 영화 검색 개발가이드

NAVER Developers - 검색 API 영화 검색 개발가이드

developers.naver.com

먼저 참고 링크를 걸어 놓겠습니다 

먼저 애플리케이션 등록을 하시고 

client ID

client secret 

발급을 받아 주시면 준비는 끝입니다 

 

RestTemplate을 이용했습니다

@Component
public class NaverMovieSearchClient {

    private RestTemplate restTemplate;

    public NaverMovieSearchClient(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public String getNaverMovieSearch(String keyWord) {
        URI uri = UriComponentsBuilder 
                .newInstance() 
                .scheme("https") 
                .host("openapi.naver.com")
                .path("/v1/search/movie.json")
                .queryParam("query", keyWord)
                .encode()
                .build()
                .toUri();
    }
}

 

query를 좀더 동적으로 생성하고 가시성 좋게 

Uribuilder 구현 클래스인 UriComponetsBuilder를 사용하겠습니다 

https://openapi.naver.com/v1/search/movie.json

기본 Get요청 url입니다 json으로 응답을 합니다!

@Component
public class NaverMovieSearchClient {

    private RestTemplate restTemplate;

    public NaverMovieSearchClient(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public String getNaverMovieSearch(String keyWord) {
        URI uri = UriComponentsBuilder
                .newInstance()
                .scheme("https")
                .host("openapi.naver.com")
                .path("/v1/search/movie.json")
                .queryParam("query", keyWord)
                .encode()
                .build()
                .toUri();

        RequestEntity requestEntity = RequestEntity
                .get(uri)
                .header("X-Naver-Client-Id", "발급받은 client id")
                .header("X-Naver-Client-Secret", "발급받은 client secret")
                .build();

        ResponseEntity<String> result = restTemplate.exchange(requestEntity, String.class);
        return result.getBody();
    }
}

헤더에 발급받은 client id와 client secret값을 설정 해주시고 

테스트를 위해 String 으로 받았지만 사용하실땐 필요한 값을 받기위해 response객체를 생성해주세요!

이제 테스트를 해봅니다 

@SpringBootTest
class NaverMovieSearchClientTest {
    @Autowired
    NaverMovieSearchClient client;

    @Test
    public void getNaverMovieSearch() {
        System.out.println(client.getNaverMovieSearch("해운대"));
    }
}

 

 

결과 :

값이 잘 나오는것을 확인 할 수 있습니다 

반응형