반응형
요구 사항
- 검색어를 요구에 따라 바꿀 수 있어야 한다.
- 검색 결과를 문자열에서 DTO로 바꿔야 한다.
NaverShopSearch 메소드 바꾸기
public String search(String query) {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("X-Naver-Client-Id", "OpslHqgdp1eP3XNONuRx");
headers.add("X-Naver-Client-Secret", "hcJSMxkk2y");
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);
System.out.println(response);
return response;
}
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
naverShopSearch.search("아이맥");
}
검색 결과를 문자열에서 DTO로 변경하기
1. org.json 패키지 설치
- JSON을 자바에서 다루기 위해, JSONObject, JSONArray 클래스가 필요하다.
- maven repository에서 가져오자.
https://mvnrepository.com/artifact/org.json/json
- build.gradle의 dependencies에 아래의 내용을 추가
// https://mvnrepository.com/artifact/org.json/json
implementation group: 'org.json', name: 'json', version: '20160810'
- Gradle을 새로 적용시켜준다
+ org.json 메소드
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
String result = naverShopSearch.search("아이맥");
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
JSONObject itemJson2 = items.getJSONObject(i);
String title = itemJson.getString("title");
String image = itemJson.getString("image");
int lprice = itemJson.getInt("lprice");
}
}
2. ItemDto 생성
@Getter
public class ItemDto {
private String title;
private String link;
private String image;
private int lprice;
public ItemDto(JSONObject itemJson) {
this.title = itemJson.getString("title");
this.link = itemJson.getString("link");
this.image = itemJson.getString("image");
this.lprice = itemJson.getInt("lprice");
}
}
3. fromJSONtoItems 메소드 생성
public List<ItemDto> fromJSONtoItems(String result) {
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
List<ItemDto> ret = new ArrayList<>();
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = items.getJSONObject(i);
ItemDto itemDto = new ItemDto(itemJson);
ret.add(itemDto);
}
return ret;
}
반응형
'스프링 (Spring) > SelectShop Project' 카테고리의 다른 글
SelectShop - HTML 구성 (0) | 2021.08.03 |
---|---|
SelectShop - 키워드로 상품 검색하기2 (0) | 2021.08.03 |
SelectShop - 관심상품 등록하기 (0) | 2021.08.02 |
SelectShop - 관심상품 조회하기 (0) | 2021.08.02 |
SelectShop API 설계 (0) | 2021.08.02 |
댓글