Node.js 서버 구축하기_2(서버 설계)
이전 포스트에서는 세팅을 했으므로 여기서는 서버를 코드의 구조에 대해서 알아보자.
대략적인 구조는 이렇다
사용자 Request -> App.js에서 요청에 맞는 라우터로 보냄 ->라우터에서는 요청에 맞는 컨트롤러(함수등)을 이용해response를 사용자에게 보낸다.
코드 예제를 통해 알아보자.
App.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var poreRouter = require('./routes/pore_route');
var wrinkleRouter = require('./routes/wrinkle_route');
var membershipRouter = require('./routes/membership_route');
var app = express();
//db
var db = require('./database')();
var db_connection = db.init();
//check connection
db.test_open(db_connection);
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/connection_test', indexRouter);
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.render('error');
});
module.exports = {
app : app,
db : db
};
"ip:포트/connection_test"를 인터넷에 검색하면(사용자가 request를 하면), indexRouter로 넘어간다.
index.js
var express = require('express');
var router = express.Router();
//import controller
const api_controller = require('../controllers/api_controller')
router.get('/', api_controller.basicAPI)
router.get('/test', api_controller.testAPI)
module.exports = router;
indexRouter에서는 넘어온 요청에 맞는 라우팅을 해준다. (라우팅의 용어가 어렵다면, 올바른 길로 안내해준다고 생각하자.) 위에서는 "ip:포트/connection_test"에 맞게 api_controller.basicAPI로 넘어가진다.
(만약 "ip:포트/connection_test/test"이면 api_controller.testAPI로 넘어간다.)
api_controller.js
function basicAPI(req,res){
res.status(200).json(
{
"success" : true
}
);
}
function testAPI(req,res){
res.status(200).json(
{
"message" : "test"
}
);
}
module.exports = {
basicAPI : basicAPI,
testAPI : testAPI,
postTestAPI : postTestAPI,
request_test: request_test,
}
index.js(라우터)에서 basicAPI를 호출한다. 그러면 화면에는

위와 같은 이미지가 뜨게 된다.
(서버 시작 방법은 npm start이다.)