EJS, node express에서 도로명주소 api 사용하기

- nodejs express ejs로 웹을 만드는데 도로명 주소 api를 사용하게됬다
- 예제가 jsp밖에없어서 헤맸는데..
따라하기
- 이미지가 먼저 나오고 설명은 이미지 아래 적습니다!
- ejs에서 도로명주소 api를 사용하는 법! 간단한 express 프로젝트로 해보자!
준비물
- vscode
- nodejs
도로명 주소 api 키 발급받기

- 도로명 주소 api 신청하기
- 신청폼을 작성한다
- 서비스폼은 개발로 선택하면 별도 인증없이 발급받을 수 있다. 공부할때 딱이다!

- 신청 버튼을 누르고 나면, 빨간색 폰트로 승인키가 보일것이다
- 승인키를 복사하여 메모해둔다!
express generator로 프로젝트 생성
- 여기부터 vscode을 열고 작업합니다
- express-generator를 전역설치한다
cmd log
1 | change directory: |
- 이런 메시지가 나오면 성공한거다
- 메시지 대로 수행해보자
cmd log
1 | C:\tmp\juso-api-practice>SET DEBUG=juso-api-practice:* & npm start |

- 여기까지 되면 http://localhost:3000/ 에 접속해서 잘 실행되는지 확인한다
주소 입력할 폼 만들기

- jsp 소스를 참고하여 만들었다
view/index.ejs
1 | <!DOCTYPE html> |
- view/index.ejs를 위 소스로 덮어쓴다
- 이제 새로운 view파일을 만든다
도로명 주소 검색 팝업용 view파일 생성
view/jusoPopup.ejs
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
- 이 jusoPopup.ejs 가 index view에서 버튼을 누르면 등장하는 팝업이다
- view/jusoPopup.ejs 이름으로 만든다
- 이제 라우터를 수정하자
api가 잘 동작하도록 라우터 수정
routes/index.js
1 | var express = require('express'); |
- routes/index.js를 위 소스로 덮어쓴다
- /popup/jusoPopup 라우트를 추가해줬다
동작 구조 설명

- 그림으로 표현해봤다..
그리고보니 엄청 더럽네.. - jusoPopup.ejs는 2가지 일을하는 놈이다
- 도로명주소 검색창을 보여주거나, 입력폼으로 도로명주소 결과를 전달한다
inputYn
이라는 변수가 있는데, 이 변수에 따라 동작 여부가 갈린다- index화면에서 주소검색 버튼을 눌러 켜면 get으로 주소팝업을 불러온다. 그러면
inputYn
변수가 초기화 되지 않아있다- http://www.juso.go.kr/addrlink/addrLinkUrl.do 로 자동으로 도로명주소 api를 통해 검색화면을 불러온다
- 사용자가 검색화면에서 검색어를 입력하면 http://www.juso.go.kr/addrlink/addrLinkUrlSearch.do 로 도로명주소 api를 통해 검색결과를 받아온다
- 결과중 하나를 선택하고 상세주소를 입력하고 마지막으로 주소입력 버튼을 누르면, post로 주소팝업을 불러온다. 이때 검색결과를 같이 넘긴다
- post로 주소팝업을 부르면 라우터에서는 수신받은 검색결과를 다시 리스폰객체에 담아서 보내준다. 그러면
inputYn
변수가 초기화 되어있다inputYn
가Y
일때, 부모창(index.ejs)에 jusoCallBack()함수를 실행시키는데, 이때 인자로 검색결과를 넘기는 것이다
- index화면에서 주소검색 버튼을 눌러 켜면 get으로 주소팝업을 불러온다. 그러면
- 그러면 index.ejs의 jusoCallBack()에서 검색결과값을 가지고 인풋을 덮었는 것이다
여기까지 프로젝트 소스
참고
EJS, node express에서 도로명주소 api 사용하기