Node.js 3일차 (api 구현)

chalong_s·2022년 9월 13일

개발을 하다보면 내가 모은 데이터를 외부의 다른 프로그램이나 개발자가 써야할 때가 있다.
그럴때 데이터를 그대로 줘버리면 코드를 노출시킬 수 있어 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');
});
profile
스마트팜 개발

0개의 댓글