mingg IT

[API] 네이버 쇼핑 open API 사용법 본문

기타

[API] 네이버 쇼핑 open API 사용법

mingg123 2021. 11. 23. 14:47

 

네이버 쇼핑 API를 사용하는 방법을 알아보겠다.

 

1. https://developers.naver.com/docs/serviceapi/search/shopping/shopping.md#%EC%87%BC%ED%95%91 

 

쇼핑 - Search API

쇼핑 NAVER Developers - 검색 API 쇼핑 검색 개발가이드 검색 > 쇼핑 네이버 쇼핑 검색 결과를 출력해주는 REST API입니다. 비로그인 오픈 API이므로 GET으로 호출할 때 HTTP Header에 애플리케이션 등록 시

developers.naver.com

접속해서 쫙 읽어보면 예시 에 호출이 있다. 

 

보면 헤더로는 X-Naver-Client-Id, X-Naver-Client-Screet가 필요하다고 되어있다. 

 

코드는 아래와 같다. 

package com.example.springserver.controller;

import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

import com.example.springserver.dto.Req;
import com.example.springserver.dto.User;

import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
@RequestMapping("/springapi/server")
public class ServerApiController {

    @GetMapping("/naverShopping")
    public String naverShopping() {
        String cloth = "원피스";
        // https://openapi.naver.com/v1/search/shop.xml?query=%EC%A3%BC%EC%8B%9D&display=10&start=1&sort=sim
        URI uri = UriComponentsBuilder.fromUriString("https://openapi.naver.com").path("/v1/search/shop")
                .queryParam("query", cloth).queryParam("display", 10).queryParam("start", 1).queryParam("sort", "sim")
                .encode().build().toUri();

        RestTemplate restTemplate = new RestTemplate();
        RequestEntity<Void> requestEntity = RequestEntity.get(uri).header("X-Naver-Client-Id", "myheader")
                .header("X-Naver-Client-Secret", "mysecret").build();
        ResponseEntity<String> result = restTemplate.exchange(requestEntity, String.class);
        return result.getBody();
    }

}

URI 를 이용해서 "http://openapi.naver.com", path에 넣어주고

queryParam으로 query, display, start를 넣어준다.

 

이후

RestTemplate를 이용해서 header값 두개를 넣어주고 ResponseEntity의 body를 출력한다.

 

보면 header에서 myheader, mysecret는 아래 있는 값을 복사해서 그대로 넣는다. 

 

 

나는 requestMapping주소로 ("/springapi/server")를 사용했고, port는 9090을 사용했기 때문에

http://localhost:9090/springapi/server/naverShopping 아래에 접속해보면

 

다음과 같은 결과를 얻을 수 있다. 

Comments