[내배캠/TIL(5/30)]네이버 검색 쇼핑 api 사용하기

손홍서·2022년 5월 30일
1

Spring

목록 보기
4/24

day28 TIL

day28 느낀점

스프링이랑 익숙해지려고 노력하는중이다. 근데 아직은 좀 부족하다. 서버리스 어렵다.. 이거때문에 요즘 공부시간이 부족하다는 느낌을 받는다. 막히는 부분이 계속 있어서 시간이 빨리 간다.

네이버 검색 쇼핑 api
https://developers.naver.com/docs/search/shopping/

dependencies {
	...
	// https://mvnrepository.com/artifact/org.json/json -> json 활용
	implementation group: 'org.json', name: 'json', version: '20160810'

}

json 형식 데이터를 활용하기위한 org.json 패키지 설치

@Component //spring에 권한을 주는 것
public class NaverShopSearch {
    public String search(String query) { //파라미터로 검색어를 받는다.
        RestTemplate rest = new RestTemplate(); //Spring 3부터 지원, REST API 호출이후 응답을 받을 때까지 기다리는 동기 방식
        
        //api를 이용하기위해서 발급받은 아이디와 시크릿을 요청 헤더에 넣는다.
        HttpHeaders headers = new HttpHeaders();
        headers.add("X-Naver-Client-Id", "발급받은 아이디");
        headers.add("X-Naver-Client-Secret", "발급받은 시크릿");
        String body = "";
        HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
        //요청한 응답을 받아온다
        ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query=" + query, HttpMethod.GET, requestEntity, String.class);
        HttpStatus httpStatus = responseEntity.getStatusCode();
        int status = httpStatus.value();
        String response = responseEntity.getBody();
        System.out.println("Response status: " + status);

        return response;
    }

    public List<ItemDto> fromJsontoItems(String result) {
    	//받아오면서 string이 된 데이터를 json형태로 변경한다. 
        JSONObject rjson = new JSONObject(result);

        //items를 꺼내야됨
        JSONArray items = rjson.getJSONArray("items");
        List<ItemDto> itemDtoList = new ArrayList<>();

        //items 하나하나만 꺼내기
        for (int i = 0; i < items.length(); i++) {
            ItemDto itemDto = new ItemDto(items.getJSONObject(i));
            itemDtoList.add(itemDto);
        }

        return itemDtoList;
    }

}

https://velog.io/@soosungp33/%EC%8A%A4%ED%94%84%EB%A7%81-RestTemplate-%EC%A0%95%EB%A6%AC%EC%9A%94%EC%B2%AD-%ED%95%A8

profile
Hello World!!

0개의 댓글