개발을 하다보면 내가 모은 데이터를 외부의 다른 프로그램이나 개발자가 써야할 때가 있다.
그럴때 데이터를 그대로 줘버리면 코드를 노출시킬 수 있어 api로 구현하면 안전하고 쉽게 데이터를 제공할 수 있다.

항상 하던데로 api.js 라는 파일을 하나 생성하여 준다.
const express = require('express');
const app = express();
const uuidAPIKey = require('uuid-apikey');
이번시간에는 1일차에서 썼던 서버를 여는 express모듈과 와 uuid-apikey라는 api를 사용하기위한 토큰을 발행해주는 모듈을 사용할 것이다.
npm i uuid-apikey
로 uuid-apikey를 설치하여 준다.
const server = app.listen(3001, ()=> {
console.log('Start Server : localhost:3001');
});
//console.log(uuidAPIKey.create()); // 진짜로 만들때는 이값을 db에 저장한다
const key = {
apiKey: 'P1KHJTY-3CJ4W4K-M1MG8VN-NWAQMKK',
uuid: 'b067196b-1b24-4e12-a069-046eaf157a4e'
};
3001포트로 서버를 열어주고 uuidAPIKey.create() 로 토큰을 발급 받는다.
원래는 발급받은 토큰을 db에 저장하고 불러와서 확인하지만 오늘은 key라는 변수에 저장하여 사용하겠다.
//유저정보를 제공하는 api
app.get('/app/users/:apikey/:type', async(req, res) => {
// :type에서 : 이 의미하는 것은 어떤 값이든 들어올수 있다
//res.send('connect.');
let {
apikey,
type
} = req.params; // 입력한 값을 받음
if(!uuidAPIKey.isAPIKey(apikey) || !uuidAPIKey.check(apikey,key.uuid)){
res.send('apikey is not valid.');
}else{
if(type == 'seoul') {
let data = [
{name:'홍길동', city:'seoul'},
{name:'김철수', city:'seoul'}
];
res.send(data);
}else if(type == 'jeju'){
let data = [
{name:'박지성', city:'jeju'},
{name:'손흥민', city:'jeju'}
];
res.send(data);
}else{
res.send('Type is not correct.');
}
}
//console.log(type);
//res.send('ok');
});
/app/users/:apikey/:type 라는 경로로 들어올시 JSON 타입으로 정보를 주는 페이지를 만들어준다
: 는 어떠한 값이든 들어올수 있음을 뜻하고 if문을 활용하여 입력한 apikey가 존재하고 uuid까지 일치하면 type에 해당하는 도시의 정보를 주는 코드를 짜보았다.
풀코드
const express = require('express');
const app = express();
const uuidAPIKey = require('uuid-apikey');
const server = app.listen(3001, ()=> {
console.log('Start Server : localhost:3001');
});
//console.log(uuidAPIKey.create()); // 진짜로 만들때는 이값을 db에 저장한다
const key = {
apiKey: 'P1KHJTY-3CJ4W4K-M1MG8VN-NWAQMKK',
uuid: 'b067196b-1b24-4e12-a069-046eaf157a4e'
};
//유저정보를 제공하는 api
app.get('/app/users/:apikey/:type', async(req, res) => {
// :type에서 : 이 의미하는 것은 어떤 값이든 들어올수 있다
//res.send('connect.');
let {
apikey,
type
} = req.params; // 입력한 값을 받음
if(!uuidAPIKey.isAPIKey(apikey) || !uuidAPIKey.check(apikey,key.uuid)){
res.send('apikey is not valid.');
}else{
if(type == 'seoul') {
let data = [
{name:'홍길동', city:'seoul'},
{name:'김철수', city:'seoul'}
];
res.send(data);
}else if(type == 'jeju'){
let data = [
{name:'박지성', city:'jeju'},
{name:'손흥민', city:'jeju'}
];
res.send(data);
}else{
res.send('Type is not correct.');
}
}
//console.log(type);
//res.send('ok');
});