Project

[Naver API] 검색 API 사용해보기

yerinpark 2023. 10. 9. 20:34

https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8

 

검색 > 블로그 - Search API

검색 > 블로그 블로그 검색 개요 개요 검색 API와 블로그 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수

developers.naver.com

위의 공식 문서를 참고한다.

 

curl  "https://openapi.naver.com/v1/search/blog.xml?query=%EB%A6%AC%EB%B7%B0&display=10&start=1&sort=sim" \
    -H "X-Naver-Client-Id: {애플리케이션 등록 시 발급받은 클라이언트 아이디 값}" \
    -H "X-Naver-Client-Secret: {애플리케이션 등록 시 발급받은 클라이언트 시크릿 값}" -v

 

 

요청 예시 중 URL만 보내면 인증 정보가 필요하다는 메세지가 출력된다.

 

 

-H에 해당하는 Client ID를 헤더에 입력해준다.

 

https://dencode.com/

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

구글링해본 몇몇 링크는 제대로 변환이 안 됐다.

위의 사이트에서 URL Encoding에 해당하는 부분을 query parameter 값으로 주면 된다.

 

query parameter에 해당하는 검색어를 utf-8로 변환해준다.

e.g. 김해준 -> %EA%B9%80%ED%95%B4%EC%A4%80

 

 

검색 결과가 잘 나온 것을 확인할 수 있다.

 

 

 

    // https://openapi.naver.com/v1/search/blog.xml
    // ?query=%EA%B9%80%ED%95%B4%EC%A4%80
    // &display=10
    // &start=1
    // &sort=sim
    @GetMapping("/naver")
    public String naver() {

        String query = "김해준";

        URI uri = UriComponentsBuilder
                .fromUriString("https://openapi.naver.com")
                .path("/v1/search/blog.xml")
                .queryParam("query", query)
                .queryParam("display", 10)
                .queryParam("start", 1)
                .queryParam("sort", "sim")
                .encode(StandardCharsets.UTF_8)
                .build()
                .toUri();

        RestTemplate restTemplate = new RestTemplate();

        RequestEntity<Void> req = RequestEntity
                .get(uri)
                .header("X-Naver-Client-Id","{id}") // 해당하는 값 넣기
                .header("X-Naver-Client-Secret","{secret}") // 해당하는 값 넣기
                .build();

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

        return result.getBody();
    }

server에 위와 같이 코드를 작성해서 프로젝트에 적용해보았다.