로그인 후 애플리케이션 등록을 한다.
다음 양식을 채워준 후 애플리케이션 등록을 마무리 해 준다.

내 애플리케이션 - 해당 애플리케이션 이름 에서 요청에 필요한 Client ID와 Client Secret정보를 확인 할 수 있다.

Documents 에서 해당 API의 요청과 응답 방식을 알려주고 있다.

REST API를 개발 할 때 이러한 문서를 참고해서 만드는 것도 괜찮을 것 같다.
요청 예를 따라 헤더를 채워 요청을 보내면 응답을 받을 수 있다.


응답 형태에 맞게 응답 DTO를 생성해준다.
@Getter
@NoArgsConstructor
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");
}
}
RestTemplate의 exchange() 메서드를 활용해 필요 헤더를 채워 요청을 보낸다.
public List<ItemDto> searchItems(String query) {
// 요청 URL 만들기
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/shop.json")
.queryParam("display", 15)
.queryParam("query", query)
.encode()
.build()
.toUri();
log.info("uri = " + uri);
RequestEntity<Void> requestEntity = RequestEntity
.get(uri)
.header("X-Naver-Client-Id", "Client-Id") // 채우기
.header("X-Naver-Client-Secret", "Client-Secret")
.build();
ResponseEntity<String> responseEntity = restTemplate.exchange(requestEntity, String.class);
log.info("NAVER API Status Code : " + responseEntity.getStatusCode());
//jsonObject.getJSONArray("items");
return fromJSONtoItems(responseEntity.getBody());
}
@GetMapping("/search")
public List<ItemDto> searchItems(@RequestParam String query) {
return naverApiService.searchItems(query);
}
Spring 애플리케이션이 정보를 잘 받아옴을 볼 수 있다.
