Map(WEB)

오픈 API를 이용한 법정동 코드 조회(2) - JavaScript(1)

별동산 2025. 2. 25. 08:38
반응형

먼저 자바스크립트로 하는 방법을 알아보겠습니다.

 

1. 코드 1

가. 코드

이것은 alert창에 송파동의 법정동 코드를 출력하는 코드입니다.

 

인증키는 입력하지 않았으므로 자신의 것으로 채우기 바랍니다.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, shrink-to-fit=no">
	<title>법정동코드 조회</title>
</head>
<body>
	<script type="text/javascript">

		xhr=new XMLHttpRequest();
		
		dong = '송파동';
		
		const HttpUrl = "https://apis.data.go.kr/1741000/StanReginCd/getStanReginCdList";
		
		let parameter = "?" + "ServiceKey" + "=" + "인증키";		
		parameter += "&" + "type" + "=" + "json";
		parameter += "&" + "locatadd_nm" + "=" + dong;
		
		const searchUrl = HttpUrl + parameter;
		
		xhr.open("GET", searchUrl);     
		
		xhr.onreadystatechange = function () {     
			if (this.readyState == 4 && this.status == 200) {     
				const obj = JSON.parse(this.responseText);
				console.log(obj);
				const regionCd = obj.StanReginCd[1].row[0].region_cd;
				alert(dong + "의 법정동 코드는 " + regionCd); 
			}     
		};     
		xhr.send(); 	

	</script>

</script>
</body>
</html>

 

나. 코드 설명

 

(1) XMLHttpRequest

XMLHttpRequest에 대한 설명을 아래를 참고 바랍니다.

XMLHttpRequest에 대한 설명

xhr=new XMLHttpRequest();

xhr.open("GET", searchUrl);     

xhr.onreadystatechange = function () {     
    if (this.readyState == 4 && this.status == 200) {     
        전송 결과 성공시 코드
    }     
};     

xhr.send(); 

 

XMLHttpRequest 변수를 선언하고, 이것을 이용해 검색 URL을 서버에 전송하고 결괏값을 받습니다.

 

(2) 검색 URL 만들기

dong = '송파동';

const HttpUrl = "https://apis.data.go.kr/1741000/StanReginCd/getStanReginCdList";

let parameter = "?" + "ServiceKey" + "=" + "인증키";

parameter += "&" + "type" + "=" + "json";
parameter += "&" + "locatadd_nm" + "=" + dong;

const searchUrl = HttpUrl + parameter;

 

요청 메시지의 형식에 따라 URL과 parameter 중 필요 없는 부분은 없애고, ServiceKey와 type, locatadd_nm(법정동명)에 대한 값만 지정합니다.

 

url이 원래 http인데, cloudaccess.net에서 무료 호스팅을 받았더니 https라고 해야 한다고 해서 바꿨습니다.

"요구가 차단되었다고 하면서 content가 HTTPS로 전달되어야 한다" 는 메시지

 

"요구가 차단되었다고 하면서 content가 HTTPS로 전달되어야 한다"라고 합니다.

 

인증키 앞에 encodeURIComponent를 붙여야 하는 경우도 있는데 여기서는 붙이면 오히려 검색이 안 돼서 뺐습니다.

 

(3) 전송 결과 처리

if (this.readyState == 4 && this.status == 200) {     
    const obj = JSON.parse(this.responseText);
    console.log(obj);
     const regionCd = obj.StanReginCd[1].row[0].region_cd;
     alert(dong + "의 법정동 코드는 " + regionCd); 
}  

 

const obj = JSON.parse(this.responseText); 

  => JSON 형식의  전송 결과인 this.responseText을 파싱 하여 JavaScript 오브젝트로 만듭니다.

 

console.log(obj);

 => 전송 결과를 콘솔 창에 띄웁니다.

 

F12키를 누르거나, 마우스 오른쪽 버튼을 누른 후 검사 메뉴를 누르고, Console 창을 보면 아래와 같이 결과가 표시됩니다.

법정동 코드 표시 JSON 파일

 

const regionCd = obj.StanReginCd[1].row[0].region_cd;

 => 법정동 코드인 1171010400은 키(Key) regioncd에 해당하는 값(Value)으로

위 화면을 보면

StanReginCd 배열의 2번째 인덱스인 1에 있고,

row란 키의 첫 번째 인덱스, [0]의 region_cd키에 해당합니다.

 

alert(dong + "의 법정동 코드는 " + regionCd); 

 => dong, 여기서는 송파동이므로 위 수식은 "송파동의 법정동 코드는 1171010400"이 됩니다.

 

실행하면 아래와 같이 경고(알림) 창이 표시됩니다.

법정동 코드 표시 화면

 

반응형