2/17(화) Naver Open API - 검색 사용하기

dev_joo·2026년 2월 17일

Naver Open API

네이버 오픈 API 목록

오픈API 사용 신청

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

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

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

REST API를 개발 할 때 이러한 문서를 참고해서 만드는 것도 괜찮을 것 같다.

API 요청 테스트

요청 예를 따라 헤더를 채워 요청을 보내면 응답을 받을 수 있다.

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 애플리케이션이 정보를 잘 받아옴을 볼 수 있다.

profile
풀스택 연습생. 끈기있는 삽질로 무대에서 화려하게 데뷔할 예정 ❤️🔥

0개의 댓글