업비트 API 자동거래 테스트2

웹서버 structure 구성

Posted by ETHAN KIM on March 11, 2022 · 9 mins read
Node.js

1. 웹통신을 위한 structure 생성


* 필요기능

  • key파일 암호화기능
  • session을 통한 로그인
  • 라우터를 통한 request에 대한 응답
  • 웹브라우저 쪽 비동기 통신 요청 및 응답


./main.js

서버 main파일
//init
const express = require('express');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
const nunjucks = require('nunjucks');
const passport = require('passport');
const app = express();
const path = require('path');

//extra init
const { urlencoded } = require('express');
const pageRouter = require('./routes/page');
const apiRouter = require('./routes/api');
const authRouter = require('./routes/auth');
const passportConfig = require('./passport');
passportConfig();

//set
app.set('port', process.env.PORT || 7002);
app.set('view engine', 'html');
nunjucks.configure('views', {
    express :app,
    watch: true,
});

//middleware
app.use(bodyParser.json());
app.use(express.static('public'));
app.use(express.static(path.join(__dirname,'public')));
app.use(urlencoded({ extended: false }));
app.use(cookieParser('locked'));
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 'locked',
    cookie: {
        httpOnly:true,
        secure: false,
    },
}));
app.use(passport.initialize());
app.use(passport.session());

//route
app.use('/', pageRouter);
app.use('/auth', authRouter);
app.use('/api', apiRouter);

//error
app.use((req, res, next) => {
    const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
    error.status = 404;
    next(error);
});
app.use((err, req, res, next) => {
    res.locals.message = err.message;
    res.locals.error = err;
    res.status(err.status || 500);
    res.render('error');
});

//chk
app.listen(app.get('port'), () => {
    console.log(app.get('port'), '번 포트에서 대기 중');
});


./routes/api.js

api 라우터 요청 확인 후 class파일 생성하여 요청 API 수행 및 결과값 응답)
//init
const express = require('express');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
const nunjucks = require('nunjucks');
const passport = require('passport');
const app = express();
const path = require('path');

//extra init
const { urlencoded } = require('express');
const pageRouter = require('./routes/page');
const apiRouter = require('./routes/api');
const authRouter = require('./routes/auth');
const passportConfig = require('./passport');
passportConfig();

//set
app.set('port', process.env.PORT || 7002);
app.set('view engine', 'html');
nunjucks.configure('views', {
    express :app,
    watch: true,
});

//middleware
app.use(bodyParser.json());
app.use(express.static('public'));
app.use(express.static(path.join(__dirname,'public')));
app.use(urlencoded({ extended: false }));
app.use(cookieParser('locked'));
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 'locked',
    cookie: {
        httpOnly:true,
        secure: false,
    },
}));
app.use(passport.initialize());
app.use(passport.session());

//route
app.use('/', pageRouter);
app.use('/auth', authRouter);
app.use('/api', apiRouter);

//error
app.use((req, res, next) => {
    const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
    error.status = 404;
    next(error);
});
app.use((err, req, res, next) => {
    res.locals.message = err.message;
    res.locals.error = err;
    res.status(err.status || 500);
    res.render('error');
});

//chk
app.listen(app.get('port'), () => {
    console.log(app.get('port'), '번 포트에서 대기 중');
});