오픈 API

실시간으로 최신의 도로명주소를 검색 할수 있습니다.

도로명주소 API 서비스는?

별도의 데이터 구축없이 최신 도로명주소를 쉽고 간편하게 검색 할 수 있습니다.

도로명주소 검색기능을 가장 빠르게 구현할 수 있는 기본 검색 화면이 포함된 팝업 API와 다양한 시스템 환경에서 이용가능한 검색 API 서비스를 제공합니다.


※ 행정망 내에서 운영되는 시스템도 이용 가능하며, 행정망 내 서비스를 위한 API 요청URL은 별도 문의 주시기 바랍니다. (1588-0061)

팝업 API 활용

- 팝업 API 화면 예시


▼ 도로명주소 표기방법
서울특별시 마포구 성암로 301, 105동 123호(상암동)

주소입력화면 소스보기    팝업API 호출 소스보기 가이드 및 소스 다운로드 (JSP | ASP | PHP)

- 팝업 API 출력유형 선택하기 (검색결과를 출력유형에 따라 다르게 조회하실 수 있습니다.)


팝업 API출력유형 선택하기
출력유형 선택

▼ 팝업 API 호출소스 출력유형 추가
<input type="hidden" name="resultType" value="4"/>

- 팝업 API 스킨변경하기 (배경, 로고 등 자신의 사이트에 맞게 이용하실 수 있습니다.)


팝업 API 스킨변경하기
스킨 미리보기

검색 API 활용

◀ 주소검색버튼을 클릭해보세요.

▼ 도로명주소 표기방법
서울특별시 마포구 성암로 301, 105동 123호(상암동)

- 검색 API 검색어 필터링 적용예시

도로명주소 API 호출시 검색어에 특수문자 또는 OR, INSERT, UNION 등 SQL예약어가 포함될 경우 보안장비가 SQL INJECTION공격으로 간주하여 해당 IP를 차단시킬 수 있습니다. 사용자분들은 API호출시 검색어 필터링를 적용하여 주시기 바랍니다.

								
<script language="javascript">
//특수문자, 특정문자열(sql예약어의 앞뒤공백포함) 제거
function checkSearchedWord(obj){
	if(obj.value.length >0){
		//특수문자 제거
		var expText = /[%=><]/ ;
		if(expText.test(obj.value) == true){
			alert("특수문자를 입력 할수 없습니다.") ;
			obj.value = obj.value.split(expText).join(""); 
			return false;
		}
		
		//특정문자열(sql예약어의 앞뒤공백포함) 제거
		var sqlArray = new Array(
			//sql 예약어
			"OR", "SELECT", "INSERT", "DELETE", "UPDATE", "CREATE", "DROP", "EXEC",
             		 "UNION",  "FETCH", "DECLARE", "TRUNCATE" 
		);
		
		var regex ;
		var regex_plus ;
		for(var i=0; i<sqlArray.length; i++){
			regex = new RegExp("\\s" + sqlArray[i] + "\\s","gi") ;
			if (regex.test(obj.value)) {
			    alert("\"" + sqlArray[i]+"\"와(과) 같은 특정문자로 검색할 수 없습니다.");
				obj.value =obj.value.replace(regex, "");
				return false;
			}
			
			regex_plus = new RegExp( "\\+" + sqlArray[i] + "\\+","gi") ;
			if (regex_plus.test(obj.value)) {
			    alert("\"" + sqlArray[i]+"\"와(과) 같은 특정문자로 검색할 수 없습니다.");
				obj.value =obj.value.replace(regex_plus, "");
				return false;
			}
		}
	}
	return true ;
}

// 적용예 (api 호출 전에 검색어 체크) 
function searchJuso(){
	if (!checkSearchedWord(document.form.keyword)) {
		return ;
	}
}
</script>		
	                 			
	                 		

- 검색 API 페이지 처리 활용 예시

								
<script language="javascript">
//페이지 이동
function goPage(pageNum){
	document.form.currentPage.value=pageNum;
	getAddr();
}
// json타입 페이지 처리 (주소정보 리스트 makeListJson(jsonStr); 다음에서 호출)
/* 
*  json타입으로 페이지 처리시 수정 
*  function pageMake(jsonStr){ 
*  	var total = jsonStr.results.common.totalCount; // 총건수 
*/

// xml타입 페이지 처리 (주소정보 리스트 makeList(xmlData); 다음에서 호출) 
function pageMake(xmlStr){
	var total = $(xmlStr).find("totalCount").text(); // 총건수
	var pageNum = document.form.currentPage.value;// 현재페이지
	var paggingStr = "";
	if(total < 1){
	}else{
		var PAGEBLOCK=document.form.countPerPage.value;
		var pageSize=document.form.countPerPage.value;
		var totalPages = Math.floor((total-1)/pageSize) + 1;
		var firstPage = Math.floor((pageNum-1)/PAGEBLOCK) * PAGEBLOCK + 1;		
		if( firstPage <= 0 ) firstPage = 1;		
		var lastPage = firstPage-1 + PAGEBLOCK;
		if( lastPage > totalPages ) lastPage = totalPages;		
		var nextPage = lastPage+1 ;
		var prePage = firstPage-5 ;		
		if( firstPage > PAGEBLOCK ){
			paggingStr +=  "<a href='javascript:goPage("+prePage+");'></a>  " ;
		}		
		for( i=firstPage; i<=lastPage; i++ ){
			if( pageNum == i )
				paggingStr += "<a style='font-weight:bold;color:blue;font-size:15px;' href='javascript:goPage("+i+");'>" + i + "</a>  ";
			else
				paggingStr += "<a href='javascript:goPage("+i+");'>" + i + "</a>  ";
		}		
		if( lastPage < totalPages ){
			paggingStr +=  "<a href='javascript:goPage("+nextPage+");'></a>";
		}		
		$("#pageApi").html(paggingStr);
	}	
}
</script>
// html 소스에서 검색결과 리스트 다음에 추가하여 구성하세요!(<div id="list" ></div>)	
<div class="paginate" id="pageApi"></div>