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

What's hot

Mongo db intro & tips
Mongo db intro & tipsMongo db intro & tips
Mongo db intro & tips
InBum Kim
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)
InBum Kim
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
Yoonsung Jung
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
HyeonSeok Choi
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임흥배 최
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
Rjs Ryu
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
InBum Kim
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
HeeJung Hwang
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5
Mungyu Choi
 
DDD start 1장
DDD start 1장DDD start 1장
DDD start 1장
Sunggon Song
 
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
NAVER D2
 
자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들
cho hyun jong
 
자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰
Woojin Joe
 
파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기
Hyeyeon Yang
 
Mongo db in use(naver)
Mongo db in use(naver)Mongo db in use(naver)
Mongo db in use(naver)
InBum Kim
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
정명훈 Jerry Jeong
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
 
Pg report 20161010_02
Pg report 20161010_02Pg report 20161010_02
Pg report 20161010_02
PgDay.Seoul
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift)
Jin wook
 

What's hot (20)

Mongo db intro & tips
Mongo db intro & tipsMongo db intro & tips
Mongo db intro & tips
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5
 
DDD start 1장
DDD start 1장DDD start 1장
DDD start 1장
 
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
이커머스 스타트업에서 검색 인프라 구축하기 - 정호욱님
 
자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들
 
자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰
 
파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기
 
Mongo db in use(naver)
Mongo db in use(naver)Mongo db in use(naver)
Mongo db in use(naver)
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
Pg report 20161010_02
Pg report 20161010_02Pg report 20161010_02
Pg report 20161010_02
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift)
 

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

서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
수보 김
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Terry Cho
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
HYUN-JOO LEE
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
Terry Cho
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
YoungSu Son
 
Flamingo project v4
Flamingo project v4Flamingo project v4
Flamingo project v4
BYOUNG GON KIM
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용
BYOUNG GON KIM
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo Project
BYOUNG GON KIM
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7
BYOUNG GON KIM
 
Geo tools Data Transfer
Geo tools Data TransferGeo tools Data Transfer
Geo tools Data Transfer
Jiyoon Kim
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
Seongchan Kang
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
Terry Cho
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
shanka2
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
Terry Cho
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
uEngine Solutions
 
Sql 중심 코드 탈피
Sql 중심 코드 탈피Sql 중심 코드 탈피
Sql 중심 코드 탈피
ssuser776e2d
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
SeungHyun Eom
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
Kivol
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oceuEngine Solutions
 

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

서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
Flamingo project v4
Flamingo project v4Flamingo project v4
Flamingo project v4
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo Project
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7
 
Geo tools Data Transfer
Geo tools Data TransferGeo tools Data Transfer
Geo tools Data Transfer
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
Sql 중심 코드 탈피
Sql 중심 코드 탈피Sql 중심 코드 탈피
Sql 중심 코드 탈피
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 

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 같은 모듈을 통해 개발 환경 에 종속되는 변수를 관리할 수 있습니다.