SlideShare a Scribd company logo
Node.js에서 공공API를
활용해서 개발하기
한국인공지능협회 devstudy
권인호 (ihkwon81@gmail.com)
Node.js + express
• Javascript 기반으로 WAS(web application server)를 손쉽게 구
축할 수 있는 환경.
For Who?
• 기본 개념과 초기 학습과정은 본 발표자료의 범위를 벗어나므
로 생략합니다.
• Javascript, Node.js, express, NPM 에 대한 기본적인 이해가 있
고, 아직 본격적인 프로젝트를 경험하기 전의 초급자를 대상으
로 합니다.
What to make?
• Helloworld 찍어보고 간단한 게시판
같은 것도 만들어봤으니 실제 서비스
같은 의미 있는 프로젝트를 만들어보고
싶은데…
• 뭘 해야 하지?
Data
• 막연하게 아이디어를 구상하는 것보다는 구체적인 대상(데이터)
이 주어지면 여러 가지 시도를 해 볼 수 있습니다.
데이터를 어디서 얻지?
• 고정된 데이터는 어디서든 구할 수 있지만, 시각화나 정보화가
의미를 갖기 위해선 유동적인 데이터가 필요합니다.
API
• 걸그룹 이름 아닙니다
• Application Programming Interface
• 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍
언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻
한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한
인터페이스를 제공한다.
- 위키백과
공개 API - 1
• 정보공개를 공급자 위주에서 국민중심·수요자 중심으로 전환함
에 따라, 공공기관이 이용자에게 정보를 재활용 할 수 있도록
제공하고, 제공받은 정보를 상업적·비영리적으로 이용할 권리를
부여함으로써 다양한 서비스와 데이터를 좀더 쉽게 이용할 수
있도록 공개한 개발자를 위한 인터페이스
- 사회보장정보원
공개 (open) API - 2
• 일반적인 open API의 정의는 공급자가 공공 기관에 한정되지
않고 누구나 사용할 수 있도록 개방된 형태의 API를 통칭합니다.
• 공개라고 하지만 공급자가 정한 일정의 제약사항은 있습니다.
예) 일일 호출 회수 500회 제한 등, 일정 시간대만 사용 가능
REST API
• Representational State Transfer
• HTTP 프로토콜의 메소드 GET/PUT/POST/DELETE를 이용하여 다양한 형태
로 표현된 리소스(JSON,XML 등)를 전달하는 API 형태(를 일반적으로 뭉뚱
그려 REST라고 칭하는데, 이는 엄밀한 의미의 RESTful한 구조와는 차이가
있지만 해당 문서에선 편의상 일반적인 정의를 따릅니다.)
• https://ko.wikipedia.org/wiki/REST
API 공급자 선택
• 공공 기관에서 REST API 형태로 제공하는 데이터를 받아서 개
발하면 여러 가지 시도를 해 볼 수 있습니다.
• 여러 선택지가 있겠지만, 이번엔 공공데이터포털을 이용합니다.
• https://www.data.go.kr
준비
• 1. 기본 개발 환경 (Node.js, express)
• 2. 공공데이터포털 회원 가입, 로그인
• 3. 사용할 API 선택
(“오픈API” 탭에서관심있는 서비스를
조회해서 선택)
사용 신청
• 설명을 보고 적당한 아이디어가 떠오르면 신청할 서비스를
선택합니다.
신청 확인
• 마이페이지>오픈API>개발계정
• 신청 현황을 볼 수 있습니다.
• 서비스에 따라 신청 후 일정
시간이 지나야 승인이 되기도
합니다.
인증키 받기
API 명세서 확보
• API 경로 (url) 와 parameter , 응답형태(response) 를 정리한 매
뉴얼입니다.
• 선택한 서비스 상세 메뉴의 기술 문서에서 다운받을 수 있습니
다.
API 명세서 분석
• API 문서는 서비스 공급자나 형태에
따라 다르지만, Request 형태에 대한
내용은 필수적으로 있습니다.
Request 모듈 설치
• https://www.npmjs.com/package/request
• node에서 http request 요청을 전송하고 response를 callback
으로 받아 처리할 수 있는 모듈을 설치합니다.
• 터미널을 통해 프로젝트 경로에서 하기 명령어로 설치합니다.
• npm install request
• 서비스 key도 받았고 API 명세에서 request 경로와 형식도 확인
했으면 request 모듈의 sample code를 참고해서 요청 코드를
작성해봅니다.
• 편의상 url root 경로를 호출하면 로직이 돌도록 작성했습니다.
• 브라우저에서 root 경로 (ex. http://localhost:3000/) 진입하고
터미널에서 console log 확인
• 에러가 return되네요.
• FAQ 페이지에 들어가서 발생한
에러 코드로 조회해보니 이런
내용이 있습니다.
• 실제로는 2시간 가량 경과 후부
터 정상 동작 하더군요.
• 이 외에도 여러 돌발상황이 발
생할 수 있는데, 어떤 에러 코드
가 발생하는지 파악해서 조치
합니다.
• 정상적으로 값이 return 되네요.
After…?
• 받아온 데이터로 무엇을 할 지는 자유입니다. 분석에 활용해서
결과값을 저장할 수도 있고, 정보를 시각화해서 유용한 서비스
를 만들 수도 있습니다.
• 일단은 데이터 형태를 분석해서 버릴 것은 버리고 가공할 것은
가공하는 것이 우선 순위 작업이겠죠.
• 데이터를 별도 저장소에 저장하거나 유료 서비스에 활용하고자
경우, 서비스 제공자가 명시한 가이드를 따르거나 별도 협의를
거치지 않으면 법적인 문제가 발생할 수 있습니다.
부록
• Front(브라우저)에서 다른 서비스의 API를 직접 호출해서 사용
하고 싶은 경우 CORS에 대한 이해가 필요할 것입니다. (가급적
권장되는 사용 방식은 아닙니다.)
• Service key 값은 코드에 하드 코딩하거나 노출되면 안됩니다!
DB에 저장해서 관리하거나 dotenv 같은 모듈을 통해 개발 환경
에 종속되는 변수를 관리할 수 있습니다.
End
• 감사합니다.

More Related Content

PDF
Los principios y la alegria de programar
PDF
Prometheus Project Journey
PPT
PDF
ReactJS | 서버와 클라이어트에서 동시에 사용하는
PDF
Node.js 기본
PDF
서버학개론(백엔드 서버 개발자를 위한)
PPTX
Open source engineering - 0.1
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Los principios y la alegria de programar
Prometheus Project Journey
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Node.js 기본
서버학개론(백엔드 서버 개발자를 위한)
Open source engineering - 0.1
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해

Similar to Node.js에서 공공API를 활용해서 개발하기 (20)

PDF
[Uws] enterprise application architecture, msa, java9, spring 소개
PPTX
REST API 설계
PPTX
Open source engineering
PDF
OpenSource Big Data Platform - Flamingo 소개와 활용
PDF
Flamingo project v4
PDF
OpenSource Big Data Platform : Flamingo Project
PDF
OpenSource Big Data Platform - Flamingo v7
PPTX
Geo tools Data Transfer
PPTX
141118 최창원 웹크롤러제작
PDF
스프링 스터디 1장
PPTX
Micro Service Architecture의 이해
PPTX
Nodejs 발표자료
PPTX
4. 대용량 아키텍쳐 설계 패턴
PDF
Private PaaS with Docker, spring cloud and mesos
PPTX
Sql 중심 코드 탈피
PDF
Elastic Search (엘라스틱서치) 입문
PDF
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
PPTX
OCE - Cno 2014 private sector oriented open paas oce
PPTX
2조 프로젝트 보고서 김동현
PDF
중고나라 거래 통계 서비스 1차 개발 완료 보고
[Uws] enterprise application architecture, msa, java9, spring 소개
REST API 설계
Open source engineering
OpenSource Big Data Platform - Flamingo 소개와 활용
Flamingo project v4
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform - Flamingo v7
Geo tools Data Transfer
141118 최창원 웹크롤러제작
스프링 스터디 1장
Micro Service Architecture의 이해
Nodejs 발표자료
4. 대용량 아키텍쳐 설계 패턴
Private PaaS with Docker, spring cloud and mesos
Sql 중심 코드 탈피
Elastic Search (엘라스틱서치) 입문
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
OCE - Cno 2014 private sector oriented open paas oce
2조 프로젝트 보고서 김동현
중고나라 거래 통계 서비스 1차 개발 완료 보고
Ad

Node.js에서 공공API를 활용해서 개발하기

  • 2. Node.js + express • Javascript 기반으로 WAS(web application server)를 손쉽게 구 축할 수 있는 환경.
  • 3. For Who? • 기본 개념과 초기 학습과정은 본 발표자료의 범위를 벗어나므 로 생략합니다. • Javascript, Node.js, express, NPM 에 대한 기본적인 이해가 있 고, 아직 본격적인 프로젝트를 경험하기 전의 초급자를 대상으 로 합니다.
  • 4. What to make? • Helloworld 찍어보고 간단한 게시판 같은 것도 만들어봤으니 실제 서비스 같은 의미 있는 프로젝트를 만들어보고 싶은데… • 뭘 해야 하지?
  • 5. Data • 막연하게 아이디어를 구상하는 것보다는 구체적인 대상(데이터) 이 주어지면 여러 가지 시도를 해 볼 수 있습니다.
  • 6. 데이터를 어디서 얻지? • 고정된 데이터는 어디서든 구할 수 있지만, 시각화나 정보화가 의미를 갖기 위해선 유동적인 데이터가 필요합니다.
  • 7. API • 걸그룹 이름 아닙니다 • Application Programming Interface • 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻 한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. - 위키백과
  • 8. 공개 API - 1 • 정보공개를 공급자 위주에서 국민중심·수요자 중심으로 전환함 에 따라, 공공기관이 이용자에게 정보를 재활용 할 수 있도록 제공하고, 제공받은 정보를 상업적·비영리적으로 이용할 권리를 부여함으로써 다양한 서비스와 데이터를 좀더 쉽게 이용할 수 있도록 공개한 개발자를 위한 인터페이스 - 사회보장정보원
  • 9. 공개 (open) API - 2 • 일반적인 open API의 정의는 공급자가 공공 기관에 한정되지 않고 누구나 사용할 수 있도록 개방된 형태의 API를 통칭합니다. • 공개라고 하지만 공급자가 정한 일정의 제약사항은 있습니다. 예) 일일 호출 회수 500회 제한 등, 일정 시간대만 사용 가능
  • 10. REST API • Representational State Transfer • HTTP 프로토콜의 메소드 GET/PUT/POST/DELETE를 이용하여 다양한 형태 로 표현된 리소스(JSON,XML 등)를 전달하는 API 형태(를 일반적으로 뭉뚱 그려 REST라고 칭하는데, 이는 엄밀한 의미의 RESTful한 구조와는 차이가 있지만 해당 문서에선 편의상 일반적인 정의를 따릅니다.) • https://ko.wikipedia.org/wiki/REST
  • 11. API 공급자 선택 • 공공 기관에서 REST API 형태로 제공하는 데이터를 받아서 개 발하면 여러 가지 시도를 해 볼 수 있습니다. • 여러 선택지가 있겠지만, 이번엔 공공데이터포털을 이용합니다. • https://www.data.go.kr
  • 12. 준비 • 1. 기본 개발 환경 (Node.js, express) • 2. 공공데이터포털 회원 가입, 로그인 • 3. 사용할 API 선택 (“오픈API” 탭에서관심있는 서비스를 조회해서 선택)
  • 13. 사용 신청 • 설명을 보고 적당한 아이디어가 떠오르면 신청할 서비스를 선택합니다.
  • 14. 신청 확인 • 마이페이지>오픈API>개발계정 • 신청 현황을 볼 수 있습니다. • 서비스에 따라 신청 후 일정 시간이 지나야 승인이 되기도 합니다.
  • 16. API 명세서 확보 • API 경로 (url) 와 parameter , 응답형태(response) 를 정리한 매 뉴얼입니다. • 선택한 서비스 상세 메뉴의 기술 문서에서 다운받을 수 있습니 다.
  • 17. API 명세서 분석 • API 문서는 서비스 공급자나 형태에 따라 다르지만, Request 형태에 대한 내용은 필수적으로 있습니다.
  • 18. Request 모듈 설치 • https://www.npmjs.com/package/request • node에서 http request 요청을 전송하고 response를 callback 으로 받아 처리할 수 있는 모듈을 설치합니다. • 터미널을 통해 프로젝트 경로에서 하기 명령어로 설치합니다. • npm install request
  • 19. • 서비스 key도 받았고 API 명세에서 request 경로와 형식도 확인 했으면 request 모듈의 sample code를 참고해서 요청 코드를 작성해봅니다. • 편의상 url root 경로를 호출하면 로직이 돌도록 작성했습니다.
  • 20. • 브라우저에서 root 경로 (ex. http://localhost:3000/) 진입하고 터미널에서 console log 확인 • 에러가 return되네요.
  • 21. • FAQ 페이지에 들어가서 발생한 에러 코드로 조회해보니 이런 내용이 있습니다. • 실제로는 2시간 가량 경과 후부 터 정상 동작 하더군요. • 이 외에도 여러 돌발상황이 발 생할 수 있는데, 어떤 에러 코드 가 발생하는지 파악해서 조치 합니다.
  • 22. • 정상적으로 값이 return 되네요.
  • 23. After…? • 받아온 데이터로 무엇을 할 지는 자유입니다. 분석에 활용해서 결과값을 저장할 수도 있고, 정보를 시각화해서 유용한 서비스 를 만들 수도 있습니다. • 일단은 데이터 형태를 분석해서 버릴 것은 버리고 가공할 것은 가공하는 것이 우선 순위 작업이겠죠. • 데이터를 별도 저장소에 저장하거나 유료 서비스에 활용하고자 경우, 서비스 제공자가 명시한 가이드를 따르거나 별도 협의를 거치지 않으면 법적인 문제가 발생할 수 있습니다.
  • 24. 부록 • Front(브라우저)에서 다른 서비스의 API를 직접 호출해서 사용 하고 싶은 경우 CORS에 대한 이해가 필요할 것입니다. (가급적 권장되는 사용 방식은 아닙니다.) • Service key 값은 코드에 하드 코딩하거나 노출되면 안됩니다! DB에 저장해서 관리하거나 dotenv 같은 모듈을 통해 개발 환경 에 종속되는 변수를 관리할 수 있습니다.