Node

Node.js 서버 구축하기_2(서버 설계)

flutter 개발하자 2021. 3. 30. 15:07

이전 포스트에서는 세팅을 했으므로 여기서는 서버를 코드의 구조에 대해서 알아보자.

 

대략적인 구조는 이렇다

사용자 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이다.)