Spring boot: RestTemplate - Naver 지역 검색 api 연동해보기

김아무개·2023년 6월 12일
0

Spring Boot 🍃

목록 보기
35/95

1.

네이버 개발자센터에서
검색 api를 사용하기 위해 open api 이용신청을 하고 인증키를 받아둔다.

네이버 개발자 센터에서 제공되는 검색 api 문서를 참고하며 진행!


2. api키 숨기기

위에서 받은 네이버 api 인증키를
properties 파일이나 yaml 파일을 새로 만들어서 입력해준 후,

// key.yaml

naver:
  client-id: asdhlagfkjdshg
  secret: sdfjhakjdhfgukiyfdgiulz

application.properties 파일에 아래 문장을 입력해 주면
자바 파일에서 사용할 수 있다.
그리고 위에서 만들어준 파일은 꼭
.gitignore에 입력해주어야 git에 업로드 되지 않는다.

spring.config.import=classpath:api-key-있는-파일.확장자

자바 파일에서
[ api-key-있는-파일.확장자 ]에 들어있는 변수를 사용할 때는
아래와 같이 사용하면 된다.

@Value("${naver.client-id}")
private final String NAVER_API_ID;

@Value("${naver.secret}")
private final String NAVER_API_SECRET;

3. controller 소스 코드

@Value("${naver.client-id}")
private final String NAVER_API_ID;

@Value("${naver.secret}")
private final String NAVER_API_SECRET;

// http://localhost:8888/api/server/naver/검색어입력
@GetMapping("/naver/{name}") 
public String naver(@PathVariable String name) {

    URI uri = UriComponentsBuilder
            .fromUriString("https://openapi.naver.com/")
            .path("v1/search/local.json")
            .queryParam("query", name) //query=검색어&display=10&start=1&sort=random
            .queryParam("display", 10)
            .queryParam("start", 1)
            .queryParam("sort", "random")
            .encode(StandardCharsets.UTF_8)
            .build()
            .toUri();

    RestTemplate restTemplate = new RestTemplate();
    RequestEntity<Void> req = RequestEntity
            .get(uri)
            .header("X-Naver-Client-Id", NAVER_API_ID)
            .header("X-Naver-Client-Secret", NAVER_API_SECRET)
            .build();

    ResponseEntity<String> result = restTemplate.exchange(req, String.class);

    return result.getBody();
}

4. api test!

profile
Hello velog! 

0개의 댓글