오픈 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("해운대"));
}
}
결과 :
값이 잘 나오는것을 확인 할 수 있습니다
'spring(스프링)' 카테고리의 다른 글
spring scheduler 사용하기 (0) | 2022.05.26 |
---|---|
spring boot + FCM push하는 방법 (0) | 2022.05.11 |
spring boot와 firebase 연결 방법 (2) (0) | 2022.05.07 |
spring boot와 firebase 연결 방법 (1) (1) | 2022.05.06 |
Querydsl 사용하기 (spring boot,maven) (2) | 2022.05.04 |