이번에 네이버 API 서비스에 대한 포스팅을 많이 했는데 결론적으로는 네이버에서 제공하는 단축 URL API 서비스를 위해 살펴보다가 포스팅 까지 하게 되었다. 그동안 네이버 API는 공유하기, 로그인, 지도 이외는 사용을 안해봤는데 이번에 간단한 API 기준으로 몇가지 사용해보니 생각보다 잘되어있어 외부 서비스할때도 많이 적용을 해볼까 한다. 

 

네이버에서 제공되는 단축 URL API의 경우 me2.do 도메인 기준으로 제공이되는데 형태는 아래와 같이 생성이 된다. 

https://me2.do/{구분자}

 

짧은 URL을 생성하여 사용하는 이유는 여러 이유가 있겠지만 주료 서비스 되는 고정된 URL 주소가 길 경우 많이 사용한다. 만약 위의 URL 보다 짧을 경우에는 굳이 사용할 필요는 없겠지만 대부분의 서비스 URL 경로는 길게 되어있다. 그렇다 해서 짧은 URL을 타이핑해서 접속하는 용도는 아니고 URL 주소 자체를 짧게 만드는데 목적이 있다. 

 

먼저 짧은 URL을 사용하기 위해선 네이버 개발자센터 > 애플리케이션 서비스 API에 추가해야한다. 해당 방법은 아래 링크를 참고하도록 하자.

 

 
단축 URL API 적용 가이드
단축 URL API는 원본 URL을 `https://me2.do/example`과 같은 형태의 짧은 URL로 반환하는 RESTful API입니다.
developers.naver.com/docs/utils/shortenurl

 

사용 API에 추가가 되었다면 아래와 같이 예제소스를 이용하여 결과를 받을 수 있다. 

 

네이버 단축 URL 생성 예제소스 - PHP
<?php  # https://developers.naver.com/docs/utils/shortenurl/  참고
	
	define('NV_CLIENT_ID', '');
	define('NV_CLIENT_SECRET', '');

	$requrl = 'https://blog.redinfo.co.kr/main/contact';
	$shorturl = request_shorturl($requrl);

	// 캡차 키 발급 요청 
	function request_shorturl($requrl){
		$url = 'https://openapi.naver.com/v1/util/shorturl?url='.$requrl;

		// 요청 
		$response = request_curl($url); 
			
		if( $response['rst'] != 'success'){ return false; } // 메시지 echo $response['msg'];

		$data = json_decode($response['data'],true);
		if( $data['errorCode'] > 0 || empty($data['result']['url']) ){ 
			return false;
		}		

		return $data['result']['url'];
	}

	// 공통 CURL 처리 
	function request_curl($url){

		// 공통헤더
		$headers = array(
			'X-Naver-Client-Id: '.NV_CLIENT_ID,
			'X-Naver-Client-Secret: '.NV_CLIENT_SECRET
		);

		$ch = curl_init(); 
		curl_setopt($ch, CURLOPT_URL, $url); 
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
		curl_setopt($ch, CURLOPT_POST, 0); 
		if( count($headers) > 0){ 
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
		}
		$data = curl_exec($ch); 

		$response = array();

		// 통신 실패 처리
		if (curl_error($ch)){ 
			$response = array('rst'=>'fail','msg'=>'CURL Error('.curl_errno( $ch ).') '.curl_error($ch));
		} 

		// 통신에 대한 성공이며, 실제 데이터에 대한 성공은 별도 처리 필요
		else{
			$response = array('rst'=>'success','data'=>$data);
		}
		curl_close($ch); 		

		return $response;
	}
?>
<h1>네이버 짧은 URL</h1>
<p><?php echo $shorturl === false ? '생성실패':$shorturl ?></p>

 

결과

 

예제소스를 실행하면 위와 같이 짧은 URL을 얻을 수 있는데, 같은 주소를 여러번 실행하더라도 똑같은 결과값을 응답받을 수 있다. 참고로 예제소스는 결과만 보여주기 위해 만든 소스이기때문에  생성 실패가 발생할 경우 직접 디버깅을 해야 한다. 또한 성공 결과도 생성된 짧은 URL만 보여주도록 만들었기때문에 상세 결과는 아래의 응답 데이터를 확인하기 바란다.