상단

우편번호 검색 서비스를 오픈 API로 제공한다. REST 방식에 JSON을 기본으로 제공하며 JavaScript 라이브러리와 iframe 형태로 사용할 수 있는 라이브러리를 제공한다.

 

설치전 사전 준비 사항


  • [MySQL Community Server 5.0.51](MySQL 5.0.51.md) 설치

    • [MySql Tools for 5.0](MySql Tools for 5.0.md) 설치

  • [Apache HTTP Server 2.2.8 with OpenSSL 0.9.8g](Apache HTTP Server 2.2.8.md) 설치

  • [Apache Tomcat 6.0.16](Apache Tomcat 6.0.16.md) 설치

    • [Tomcat Connectors 1.1.26](Tomcat Connectors 1.1.26.md) 설치

 
 

최신 우편번호 수집


  • 인터넷우체국에서 우편번호 코드를 다운로드 한다.

    • 화면 좌측의 "우편번호검색" 메뉴를 클릭하여 새 창을 띄운다.

    • "우편번호 내려받기" 버튼에서 "고시 우편번호 DB"를 클릭하여 mic_zipcode_DB.exe 파일을 다운로드 한다.

    • mic_zipcode_DB.exe 파일을 실행하면 다음 파일이 포함된 "우편번호파일" 디렉토리가 생긴다.

      • 우편번호 DB활용방법.txt

      • 20080327_변경분.xls

      • 20080327_우편번호(기존형태).xls

      • '''20080327_우편번호(분리형태).xls''' (우편번호 오픈 API에서 사용할 우편번호 정보)
        우편번호 코드 다운로드

  • 20080327_우편번호(분리형태).xls 파일의 구조
    {| cellspacing="1" cellpadding="1" border="1" width="100%" 
    |- 
    |width="20%" align="center"|명칭 
    |width="20%" align="center"|코드 |width="20%" align="center"|종류 및 크기 |width="40%" align="center"|기타 |- |우편번호 |zipcode |align="center"|char(6)

     
    일련번호
    serial
    align="center"
     
    -
    주소 : 시도
    addr01
    align="center"
     
    -
    주소 : 시군구
    addr02
    align="center"
     
    -
    주소 : 읍면동
    addr03
    align="center"
     
    -
    주소 : 리
    addr04
    align="center"
     
    -
    주소 : 도서
    addr05
    align="center"
     
    -
    산번
    bungi
    align="center"
     
    -
    시작번지 : 주
    bungifrmain
    align="center"
     
    -
    시작번지 : 부
    bungifrsub
    align="center"
     
    -
    끝번지 : 주
    bungitomain
    align="center"
     
    -
    끝번지 : 부
    bungitosub
    align="center"
     
    -
    아파트/건물명
    building
    align="center"
     
    -
    동범위 : 시작
    dongfr
    align="center"
     
    -
    동범위 : 끝
    dongto
    align="center"
     
    -
    변경일
    datechange
    align="center"
     
    -
    주소
    addr
    align="center"
     
    }
 

MySQL에 우편번호 저장


DB Schema와 사용자 추가 설정

  • MySQL에 추가 Schema를 등록한다.

 
  1. MySQL Administrator에 root 관리자로 로그인 한다.

  2. 좌측 상단 창에서 "Catalogs"를 선택한다.

  3. 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.

  4. "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.

  5. Schema 생성화면에서 "Schema name"으로 "openapidb"를 입력한다.
    설치 시작


  • MySQL에 추가 사용자를 등록한다.

 
  1. 좌측 상단 창에서 "User Administration"을 선택한다.

  2. 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.

  3. "Add new user" 메뉴를 선택하여 사용자를 생성한다.

  4. "User Information" 탭에서 "MySQL User"("openapi"), "Password", "Confirm Password" 등을 등록한다.
    설치 시작


  • MySQL에서 사용자의 권한을 설정한다.

 
  1. "Schema Privileges" 탭에서 사용자가 사용할 Schema("openapidb")를 선택한다.

  2. "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.

  3. "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
    설치 시작


  • MySQL Query Browser에 접속한다.

 
  1. 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
    Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.

 
  1. 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.

  2. grant all privileges on openapidb.* to openapi@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)

  3. flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)

  4. select host, user, password from user; (사용자의 접속 정보 확인)
    접속 권한 설정

  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법

 
 mysql -uroot -pxxx mysql
     grant all privileges on openapidb.* to openapi@localhost identified by '암호';
     flush privileges;
     select host, user, password from user;
     exit

DB에 zipcode 테이블 생성

  • MySQL Query Browser에 접속한다.

 
  1. 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
    Query Browser 접속


  • MySQL 데이터베이스에서 생성할 우편번호(zipcode) 테이블 생성 SQL 문을 작성한다.

    • 우측의 "Schemata" 탭에서 "openapidb"을 더블 클릭하여 openapidb에 접속한다.

    • 문자셋(charset)은 유니코드(UTF8)로 설정하여 zipcode 테이블을 생성하는 sql문을 실행한다.

 
 create table zipcode (
   zipcodeid int(11) not null auto_increment primary key,
   zipcode char(6) default null,
   serial char(3) default null,
   addr01 varchar(30) default null,
   addr02 varchar(30) default null,
   addr03 varchar(30) default null,
   addr04 varchar(30) default null,
   addr05 varchar(30) default null,
   bungi varchar(30) default null,
   bungifrmain varchar(30) default null,
   bungifrsub varchar(30) default null,
   bungitomain varchar(30) default null,
   bungitosub varchar(30) default null,
   building varchar(30) default null,
   dongfr varchar(30) default null,
   dongto varchar(30) default null,
   datechange varchar(8) default null,
   addr varchar(100) default null
 ) engine=InnoDB default charset=utf8;
 
  • 다른 데이터베이스에서 테이블을 생성하기 위해 아래 데이터베이스 컬럼 타입 매핑 (Database Column Type Mappings)을 참조하라.
    {| cellspacing="1" cellpadding="1" border="1" width="100%" 
    |- 
    |width="15%" align="center"|Oracle 
    |width="15%" align="center"|Informix |width="15%" align="center"|MS SQL |width="15%" align="center"|Sybase |width="15%" align="center"|MySQL |width="15%" align="center"|MS Access |width="10%" align="center"|IBM DB2 |- |align="center"|char |align="center"|char |align="center"|char |align="center"|char |align="center"|char |align="center"|varchar |align="center"|varchar |- |align="center"|varchar2 |align="center"|varchar(255), lvarchar |align="center"|varchar |align="center"|varchar |align="center"|varchar(255), text |align="center"|varchar |align="center"|varchar |- |align="center"|integer |align="center"|integer |align="center"|int |align="center"|int |align="center"|int |align="center"|integer |align="center"|int |- |align="center"|long |align="center"|text |align="center"|text |align="center"|text |align="center"|mediumtext |align="center"|memo |align="center"|long |}

    • 괄호안의 숫자는 해당 필드의 사이즈(크기) 제한이므로 참조하세요.

 
 

우편번호 excel 파일을 CSV 파일로 변환

  • "20080327_우편번호(분리형태).xls" 파일을 열어 1행과 2행을 삭제한다.
    Query Browser 접속


  • F12 키를 누른 후 "파일 이름"에 "zipcode"를 "파일 형식"에 "CSV (쉼표로 분리) (*.csv)"를 선택하여 다른 이름(zipcode.csv)으로 저장한다.
    Query Browser 접속


  • 자신이 사용하는 편집기에서 zipcode.csv 파일을 읽어 문자셋(charset)을 UTF-8로 변환하여 저장한다.

    • UltraEdit-32 Version 9.0 사용시 "File -> Conversions -> ASCII to UTF-8 (Unicode Encoding)" 메뉴를 사용한다.

    • Notepad++ v4.8.5 사용시 "형식(M) -> Conver to UTF-8" 메뉴를 사용한다.

    • JDK를 사용하여 인코딩할 경우 [문자셋과 인코딩](문자셋과_인코딩.md#JVM을 이용한 파일 코드 변환.md)을 참고한다.

 
 native2ascii -encoding EUC_KR  zipcode.csv zipcode.tmp  
 native2ascii -reverse -encoding UTF8  zipcode.tmp  zipcode_utf8.csv
 
  • zipcode.csv 파일의 맨 마지막에 빈 라인이 있으면 데이터 로딩시 warning이 발생하므로 빈 라인을 삭제한다.

 
 
 
 

우편번호를 DB로 로딩

  • 생성한 zipcode.cvs 파일을 d:/ 디렉토리에 복사한다.

  • MySQL Administrator에서 "Tools -> MySQL Command Line Client" 메뉴를 선택하여 Client 창을 띄운다.

  • zipcode.cvs를 다음 명령을 사용하여 MySQL에 로딩한다.

 
 mysql> load data local infile 'd:/zipcode.csv'
 into table openapidb.zipcode
 fields terminated by ','
 lines terminated by '\n'
 (zipcode, serial, addr01, addr02, addr03, addr04, addr05, 
  bungi, bungifrmain, bungifrsub, bungitomain, bungitosub, 
  building, dongfr, dongto, datechange, addr);

Query Browser 접속

  • Deleted나 Skipped가 발생하면 원인을 확인한 후 다시 작업을 한다.

  • "show warnings;" 명령을 사용하여 warnings을 확인할 수 있다.

  • 위 화면의 warning은 zipcode.csv 파일의 맨 마직막 라인이 비어 있어서 발생 하였다.

  • Database에 로드된 레코드의 갯수를 확인하여 정상 로드되었는지 검사한다.

 
 mysql> select count(*) from openapidb.zipcode;
 

Open API 설계


보안 설계

  • login

 
 http://www.jopenbusiness.com/api/login.do
   userid=
   password=
 
  • logout

 
 http://www.jopenbusiness.com/api/logout.do
   userid=
   password=
 

Query 설계

  • describe

 
 http://www.jopenbusiness.com/api/describe.do
   object=objectName
 
  • search

 
 http://www.jopenbusiness.com/api/searchZipcode.do
   type=1 (주소로 우편번호 검색)
   query=불광동
   pageSize=20
   page=1
 
  • select

 
 http://www.jopenbusiness.com/api/select.do
   query=select * from zipcode
   pageSize=20
   page=1
 
  • insert

 
 http://www.jopenbusiness.com/api/insert.do
   object=JSON
 
  • update

 
 http://www.jopenbusiness.com/api/update.do
   object=JSON
 
  • delete

 
 http://www.jopenbusiness.com/api/delete.do
   objectIds=ID배열
 

참조 설계

  • list

 
 http://www.jopenbusiness.com/api/list.do
   query=select * from zipcode
   search=[value](type,)
   sort=[asc](type,)
   pageSize=20
   page=1
   css=[cssURL](cssURL.md)
 

도로명 주소


 

PC용 주소 검색기

  • c:/PCRNS/

    • pcrns.h2.db : 2.9GB

    • pcrns_cfg.h2.db

 
 

주소 검색 솔루션

 
 

주소 검색 Open API

 
 

참고 문헌

 
 

참고문헌


 
 

분류: 오픈_API

최종 수정일: 2024-09-30 12:26:19

이전글 :
다음글 :