오늘 배운 내용은 naver-api를 이용하여 나만의 맛집 리스트를 작성하는 프로젝트를 하기에 앞서 naver-api연동에 대해 공부하였다. 우선 검색창에 naver open api를 검색한 후 네이버 개발자센터 홈페이지에 접속한다.
원하는 api에 대해 활용신청을 한 후 간단하게 api를 사용할 수 있다.
본격적으로 코딩하기에 앞서 Talend api tester 프로그램을 사용하여 다음과 같이 테스트를 진행할 수 있다.

naver-api에서 제공해주는 json 링크를 적용하고 query를 작성해준다. 그리고 HEADERS부분에 api홈페이지에서 받은 클라이언트 아이디와 암호를 작성해주면 된다. 작성한 후에 Send로 호출을 하면 다음과 같이 성공한 화면을 확인할 수 있다. 아래 사진의 예는 naver-api의 예이므로 증권에 관한 이야기가 출력이 된것을 볼수있다.

이후에 본격적으로 naver-api연동에 대해 코드를 작성하겠다.
package com.example.server.controller;
import com.example.server.dto.Req;
import com.example.server.dto.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
@Slf4j
@RestController
@RequestMapping("/api/server")
public class ServerApiController {
// https://openapi.naver.com/v1/search/local.json
// ?query=%EC%A3%BC%EC%8B%9D
// &display=10
// &start=1
// &sort=random
@GetMapping("/naver")
public String naver() {
String query = "갈비집";
String encode = Base64.getEncoder().encodeToString(query.getBytes(StandardCharsets.UTF_8));
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/local.json")
.queryParam("query", "중국집")
.queryParam("display", 10)
.queryParam("start", 1)
.queryParam("sort", "random")
.encode(Charset.forName("UTF-8"))
.build()
.toUri();
RestTemplate restTemplate = new RestTemplate();
RequestEntity<Void> req = RequestEntity
.get(uri)
.header("X-Naver-Client-Id", "9JMUh2BwEEjDV5yV7DSD")
.header("X-Naver-Client-Secret", "92EzXvBpsK")
.build();
ResponseEntity<String> result = restTemplate.exchange(req, String.class);
return result.getBody();
}
}
위에 Talend api tester에서 테스트한 값을 코드에 적절하게 넣어주면 된다. 처음에는 원하는 문자를 encoding을 해준 후에 encoding해준 값을 적용하여 하려고 했으나 원할하게 이루어 지는 사이트가 없어 코드 자체에서 encoding을 하였다. 코드를 작성하고 실행한 결과 다음과 같이 출력되는것을 볼수있다.
첫번째 사진은 갈비집에 대한 naver-api 검색 결과이고 두번째 사진은 짜장면에 대한 검색 결과이다.


이렇게 출력된 json형식의 결과를 이쁘게 확인하기 위해 JSON Formatter & Validator에 접속하고 사진과 같이
출력된 결과를 복사 붙여넣고 Process를 클릭하면 다음과 같이 깔끔한 형식의 데이터를 확인할 수 있다.


이상으로 오늘 공부한 내용은 여기까지다. 나만의 맛집 리스트 프로젝트를 하기 위해 naver-api를 활용해야 하는데
프로젝트에 들어가기 앞서 연동을 먼저 해보는 과정을 거치면 더 수월할거 같아 공부해 보았다.
다음시간부터는 프로젝트를 진행할것이다. 요즘 학교생활을 하면서 블로그를 잘 적지 못하고있는데 시간이 될때 꼭 작성하겠다며 혼자 다짐하고 있다. 그럼 다음시간에 프로젝트로 돌아오겠다.

'Spring Boot > naver-api 프로젝트' 카테고리의 다른 글
ArrayList를 이용한 DB코딩 (0) | 2023.04.22 |
---|