https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8
위의 공식 문서를 참고한다.
curl "https://openapi.naver.com/v1/search/blog.xml?query=%EB%A6%AC%EB%B7%B0&display=10&start=1&sort=sim" \
-H "X-Naver-Client-Id: {애플리케이션 등록 시 발급받은 클라이언트 아이디 값}" \
-H "X-Naver-Client-Secret: {애플리케이션 등록 시 발급받은 클라이언트 시크릿 값}" -v
요청 예시 중 URL만 보내면 인증 정보가 필요하다는 메세지가 출력된다.
-H에 해당하는 Client ID를 헤더에 입력해준다.
구글링해본 몇몇 링크는 제대로 변환이 안 됐다.
위의 사이트에서 URL Encoding에 해당하는 부분을 query parameter 값으로 주면 된다.
query parameter에 해당하는 검색어를 utf-8로 변환해준다.
e.g. 김해준 -> %EA%B9%80%ED%95%B4%EC%A4%80
검색 결과가 잘 나온 것을 확인할 수 있다.
// https://openapi.naver.com/v1/search/blog.xml
// ?query=%EA%B9%80%ED%95%B4%EC%A4%80
// &display=10
// &start=1
// &sort=sim
@GetMapping("/naver")
public String naver() {
String query = "김해준";
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/blog.xml")
.queryParam("query", query)
.queryParam("display", 10)
.queryParam("start", 1)
.queryParam("sort", "sim")
.encode(StandardCharsets.UTF_8)
.build()
.toUri();
RestTemplate restTemplate = new RestTemplate();
RequestEntity<Void> req = RequestEntity
.get(uri)
.header("X-Naver-Client-Id","{id}") // 해당하는 값 넣기
.header("X-Naver-Client-Secret","{secret}") // 해당하는 값 넣기
.build();
ResponseEntity<String> result = restTemplate.exchange(req, String.class);
return result.getBody();
}
server에 위와 같이 코드를 작성해서 프로젝트에 적용해보았다.
'Project' 카테고리의 다른 글
AngularJS로 만든 포트폴리오 웹사이트 1일차 (0) | 2024.11.04 |
---|---|
[프로젝트 회고] 대용량 데이터 처리 프로젝트(최저 가격 검색 시스템) (0) | 2024.08.11 |
@RequestBody와 @ModelAttribute를 언제 사용해야 할까? (0) | 2024.02.26 |
[OpenCV] 앱 개발 일지 (0) | 2023.08.09 |
EC2 서버에 올라간 Spring Boot와 React 연동 시 CORS 설정 (0) | 2023.07.13 |