Node Js, OpenAPI๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๊ธฐ (Request.js)
๐จโ๐ป OpenAPI๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๊ธฐ (Request.js)

โ Problem
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ
๊ตญ๊ฐ์์ ๋ณด์ ํ๊ณ ์๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผใ๊ณต๊ณต๋ฐ์ดํฐ์ ์ ๊ณต ๋ฐ ์ด์ฉ ํ์ฑํ์ ๊ดํ ๋ฒ๋ฅ (์ 11956ํธ)ใ์ ๋ฐ๋ผ ๊ฐ๋ฐฉํ์ฌ ๊ตญ๋ฏผ๋ค์ด ๋ณด๋ค ์ฝ๊ณ ์ฉ์ดํ๊ฒ ๊ณต์ โขํ์ฉํ ์ ์๋๋ก ๊ณต๊ณต๋ฐ์ดํฐ(Datase
www.data.go.kr
์ ์ฌ์ดํธ์ ๋ฑ๋ก๋ ๋ค์ํ ๊ณต๊ณต๋ฐ์ดํฐ๋ค์ OpenAPI๋ฅผ ํตํด ํ์ฉํ ์ ์์ต๋๋ค.
์ ๋ ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์ ๋ฑ๋ก๋ ์์ธ์์ ๋ชจ๋ ๋ณ์ ์ ๋ณด๊ฐ ํ์ํ๊ณ
์ด๋ฅผ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ดํธ์์ ๋ณ์์ ๋ณด OpenAPI key๋ฅผ ๋ฐ๊ธ๋ฐ์์ต๋๋ค.


๋ฐ๊ธ๋ฐ์ Service key๋ฅผ ํตํด Postman๊ณผ ๋ธ๋ผ์ฐ์ ๋ก ๊ฐ๊ฐ ์์ฒญํ ๊ฒฐ๊ณผ์ ๋๋ค.
์ด๋ ๊ฒ ๋ด๊ฐ ์ํ๋ ์๋ฐฑ ๊ฐ์ ๋ณ์์ ๋ณด๋ฅผ ํ๋์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ ๋ง์ ๋ณ์ ์ ๋ณด๋ค์ ๋์ DB์ ์ ์ฅํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ด๋ฅผ ์ผ์ผ์ด DB์ ์ ๋ ฅํ๋ ๊ฑด ๋ง๋ ์ ๋๋ค๊ณ ์๊ฐ๋๋๋ฐ์
์ ๋ ์ด๋ฅผ Node Js์์ request๋ชจ๋์ ํ์ฉํ์ฌ DB์ ํ ๋ฒ์ ์ ์ฅํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ Solution
Postman | The Collaboration Platform for API Development
Postman makes API development easy. Our platform offers the tools to simplify each step of the API building process and streamlines collaboration so you can create better APIs faster.
www.postman.com
Postman์์ ๋ด๊ฐ ๋ฐ๊ธ๋ฐ์ ServiceKey๋ฅผ ํตํด OpenAPI๋ฅผ ์์ฒญํด ์ค์๋ค.

OpenAPI๋ฅผ ํธ์ถํ๊ณ ์ค๋ฅธ์ชฝ ์๋จ์ ์์ ์ฌ์ง๊ณผ ๊ฐ์ ๋ฒํผ์ ํด๋ฆญํด ์ค๋๋ค.

์ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ด ํ๋ก์ ํธ์ ๋ถ์ฌ ๋ฃ๊ธฐ ํด ์ค์๋ค.
npm i request
request ๋ชจ๋์ ์ค์นํด ์ค๋๋ค.

const numOfRows = 10;
const ServiceKey = '';
const hospitalCategory = 80;
//14ํผ๋ถ๊ณผ 61์น๊ณผ 08์ฑํ์ธ๊ณผ 12์๊ณผ 01๋ด๊ณผ 05์ ํ์ธ๊ณผ 80ํ๋ฐฉ
let request = require('request');
let options = {
'method': 'GET',
'url': 'http://apis.data.go.kr/B551182/hospInfoService1/getHospBasisList1?numOfRows=' +
numOfRows + '&_type=json&sidoCd=110000&clCd=21&ServiceKey=' +
ServiceKey + '&dgsbjtCd=' + hospitalCategory,
'headers': {
'Cookie': 'WMONID=sN2sN5XVW3y'
}
};
request(options, function (error, response, body) {
if (error) {
throw new Error(error);
}
let info = JSON.parse(body);
for (i in info['response']['body']['items']['item']) {
console.log('๋ณ์์ด๋ฆ : ' + info['response']['body']['items']['item'][i]['yadmNm']);
console.log('๋ณ์์ฃผ์ : ' + info['response']['body']['items']['item'][i]['addr']);
console.log(
'๋ณ์์ ํ๋ฒํธ : ' + info['response']['body']['items']['item'][i]['telno']
);
console.log('๋ณ์์๋ : ' + info['response']['body']['items']['item'][i]['YPos']);
console.log('๋ณ์๊ฒฝ๋ : ' + info['response']['body']['items']['item'][i]['XPos']);
console.log(" ")
}
});
์ ๊ฐ DB์ ์ ์ฅํ ์ ๋ณด๋ ๋ณ์ ์ด๋ฆ, ๋ณ์ ์์น(์๋, ๊ฒฝ๋), ๋ณ์ ์ฃผ์, ๋ณ์ ์ ํ๋ฒํธ
์ด๋ ๊ฒ 5๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.

์ด๋ ์คํ ๊ฒฐ๊ณผ์
๋๋ค.
console.log๋ก ์์ฑํ ์ฝ๋๋ค์ ๋ชจ๋ ๋ณ์์ ํ ๋น์ ์ฃผ์ด์ ๋ถ๋ฌ์จ ๋ณ์์ ์ ๋ณด๋งํผ
for๋ฌธ์ ํ์ฉํ์ฌ Insert ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก DB์ ๋ฃ์ด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค!