본문 바로가기

SW Dev Portfolio

[JAVA]대한민국 법정동 코드 reg-code-api 조회 API 사용방법 알려드리오

반응형

 

https://juso.dev/docs/reg-code-api/#headline-4

대한민국 법정동 코드 조회 API

대한민국 법정동 코드 조회 API 법정동 목록 API는 GCP의 Cloud Run 환경 위에서 동작합니다. 기본적으로 gRPC 서버와 ESPv2 기반 프록시 서버가 함께 동작합니다. API 주소는 grpc-proxy-server-mkvo6j4wsq-du.a.run.

juso.dev

공공데이터를 사용허가를 받고 
데이터를 정렬 및 선택적으로 보기 위해서는 
아무래도 위치 기반 데이터가 많기 때문에 
대한민국 내 지역 별로 묶어 보고 싶을 때가 많다 
 
공공데이터 json xml 값 중 
zcode zscode 라는걸 확인 할 수 있는데 
해당 코드가 법정동 코드이다 
해당 코드를 데이터 베이스에 집어 넣어서 매칭 시킬 수도 있지만 
해당 값을 불러 올 수 있는 API 가 있어 소개하고자 한다. 

https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=*00000000

우선 기본 url 은 이와 같다 
regcode_pattern
파라메터를 통해 원하는 값을 불러 올 수 있는데 

HTTP 호출
예제
대한민국의 모든 특별/광역시, 도 반환
https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=*00000000
서울특별시 소속의 모든 구, 동을 반환
https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=11*
서울특별시 소속의 모든 구 반환
https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=11*00000
서울특별시 종로구를 포함한 종로구의 모든 동 반환
https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=1111*
서울특별시 종로구의 모든 동"만" 반환
https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?regcode_pattern=1111*&is_ignore_zero=true

이와 같다 
파라메터 값이 많지 않아 아쉽긴하다 
API를 호출 하는 예시 코드는 이와 같다 
JAVA
 
반환 값 ! 

public String callLocalNumberApi() throws IOException {
      	 
      	  	StringBuilder urlBuilder = new StringBuilder("https://grpc-proxy-server-mkvo6j4wsq-du.a.run.app/v1/regcodes?"); /*URL*/
      	   
      	  
            urlBuilder.append("&" + URLEncoder.encode("regcode_pattern","UTF-8") + "=" + URLEncoder.encode("*00000000", "UTF-8")); /*한 페이지 결과 수 (최소 10, 최대 9999)*/
      	    URL url = new URL(urlBuilder.toString());
      	   
      	    System.out.println("APIurl : "  +url);
      	   
      	    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      	    conn.setRequestMethod("GET");
      	    conn.setRequestProperty("Content-type", "application/json");
      	   
      	    System.out.println("API 응답 코드 : " + conn.getResponseCode());
      	   
      	    BufferedReader rd;
              if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
                  rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
              } else {
                  rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
              }
              StringBuilder sb = new StringBuilder();
              String line;
              while ((line = rd.readLine()) != null) {
    				/* System.out.println(line); */
                  sb.append(line);
              }
              rd.close();
              conn.disconnect();
    			/* System.out.println(sb.toString()); */
      	    return sb.toString();
      	}
예시  
{"regcodes":[{"code":"1100000000","name":"서울특별시"},
{"code":"2600000000","name":"부산광역시"},
{"code":"2700000000","name":"대구광역시"},
{"code":"2800000000","name":"인천광역시"},
{"code":"2900000000","name":"광주광역시"},
{"code":"3000000000","name":"대전광역시"},
{"code":"3100000000","name":"울산광역시"},
{"code":"4100000000","name":"경기도"},
{"code":"4300000000","name":"충청북도"},
{"code":"4400000000","name":"충청남도"},
{"code":"4500000000","name":"전라북도"}
,{"code":"4600000000","name":"전라남도"},
{"code":"4700000000","name":"경상북도"},
{"code":"4800000000","name":"경상남도"},
{"code":"5000000000","name":"제주특별자치도"},
{"code":"5100000000","name":"강원특별자치도"}]}

개인적으로는 디비에 넣어서 관리하는게 더 좋을 수도 있다고 생각한다 

반응형