스프링이랑 익숙해지려고 노력하는중이다. 근데 아직은 좀 부족하다. 서버리스 어렵다.. 이거때문에 요즘 공부시간이 부족하다는 느낌을 받는다. 막히는 부분이 계속 있어서 시간이 빨리 간다.
네이버 검색 쇼핑 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;
}
}