spring | spring boot

SpringBoot yaml, naver API와 연결하기

socialcomputer 2022. 2. 3. 17:24
반응형

spring에서 yaml은 처음 써봤기 때문에 참고용으로 올려두려고 한다. 

// application.yaml
naver:
  url:
    search:
      local: https://openapi.naver.com/v1/search/local.json
      Image: https://openapi.naver.com/v1/search/image
  client:
    id: 홈페이지에서 발급
    secret: 홈페이지에서 발급
    
server:
   port: 포트번호
   
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
      
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER // swagger 버전오류해결 부분

그리고 위의 naver 부분을 java파일에서 가져다 쓸 수 있다.

public class NaverClient {
	@Value("${naver.client.id}")//lombok꺼 아니고 springframeworkd의 value어노테이션
	private String naverClientId;
	@Value("${naver.client.secret}")
	private String naverClientSecret;
	
	@Value("${naver.url.search.local}")
	private String naverUrlSearchLocal;
	@Value("${naver.url.search.image}")
	private String naverUrlSearchImgae;
    }

 

 

네이버 개발자 센터 링크 https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

위의 링크를 들어가 보면 각 카테고리의 api마다 요청하는 예시를 잘 살펴보고 그에 맞게 알맞도록 설정해주어야 한다. 

검색 api로 요청을 보내고 받는다고 하면 다음과 같은 메서드를 작성할 수 있다. 

public SearchLocalRes searchLocal(SearchLocalReq searchLocalReq) {
		var uri = UriComponentsBuilder.fromUriString(naverUrlSearchLocal)
				.queryParams(searchLocalReq.toMultiValueMap())
				.build()
				.encode()
				.toUri();
		
		var headers = new HttpHeaders();
		headers.set("X-Naver-Client-Id", naverClientId);
		headers.set("X-Naver-Client-Secret", naverClientSecret);
		headers.setContentType(MediaType.APPLICATION_JSON);
		
		var httpEntity = new HttpEntity<>(headers);
		
		var responseType = new ParameterizedTypeReference<SearchLocalRes>() {};
		
		var responseEntity = new RestTemplate()
				.exchange(uri, HttpMethod.GET ,httpEntity, responseType);
		
		return responseEntity.getBody();
	}

 

 

반응형