본문 바로가기

기타/node js

express 라우터(Router) 사용법 분리 방법

728x90
라우팅이란 url의 정의와 url이 클라이언트 요청에 응답하는 방식입니다.

어떤 네트워크 안에서 데이터를 통신할 때 최적의 경로를 선택하는 과정입니다.

express 라우터 분리방법은 express.Router부분으로 내려가셔서 보시면 됩니다.

 

express에는 app.method(path, hadler)를 통해 라우터를 정의합니다.

app은 express의 인스턴스이고 method는 http 요청 메서드로, GET, POST, PUT, DELETE가 있습니다.

PATH는 서버의 경로이고 HANDLER는 서버에서 받아온 정보를 처리하는 함수가 들어가는 부분입니다.

 

예시를 통해 살펴보도록 하겠습니다.

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('hello balmostory');
});

app.listen(3000, () => {
  console.log('listen t0 3000')
})

 

 

 

res.sed를 사용했는데 

. download(),. end(),.() json 등 다양한 응답 메서드가 있으니 공식문서를 참고하시기 바랍니다.

 

만약 한 경로에 대해서 get, post 방식으로 접근한다고 하면 어떻게 해야 할까요?

app.route를 통해 해결할 수 있습니다.

var express = require('express');
var app = express();

app.route('/')
.get(function(req, res) {
  res.send('hi balmostory');
})
.post(function(req, res) {
  res.send('hi balmostory');
})

app.listen(3000, () => {
  console.log('listen t0 3000')
})

next함수에 대해 알아보도록 하겠습니다.

next함수를 호출하면 다음 미들웨어 함수로 제어가 전달됩니다.

예시를 통해 알아보도록 하겠습니다.

get안에는 두개의 콜백 함수가 있습니다.

두 가지 중 한 가지만 실행됩니다.

때문에 페이지에 로드되는 것이 없지요.

var express = require('express');
var app = express();

app.get('/', function (req, res, next) {
  console.log('hi');
}, function (req, res) {
  res.send('Hello ');
});

app.listen(3000, () => {
  console.log('listen t0 3000')
})

 

 

next함수를 쓰면 두 번째 콜백 함수로 제어가 넘어가고 hello가 페이지에 제대로 전달된 것을 알 수 있습니다.

var express = require('express');
var app = express();

app.get('/', function (req, res, next) {
  console.log('hi');
  next();
}, function (req, res) {
  res.send('Hello ');
});

app.listen(3000, () => {
  console.log('listen t0 3000')
})

 

 

express.Rounter의 사용방법에 대해 알아보겠습니다.(express 라우터 분리)

라우터를 모듈로 작성해 라우터 모듈에 미들웨어 함수를 로드하고 기본 앱의 한 경로로 라우터 모듈을 마운트 하여 사용할 수 있습니다.

말로 하면 이해가 잘 안 가니 예시를 통해 알아보도록 하겠습니다.

router/router_1.js라는 모듈을 만듭니다.

var express = require('express');
var router = express.Router();

router.use(function(req, res, next) {
  next();
});

router.get('/', function(req, res) {
  res.send('hi1');
});

router.get('/about', function(req, res) {
  res.send('hi2');
});

module.exports = router;

 

그런 후 메인 js에서 이렇게 등록해줍니다.

var express = require('express');
var app = express();
var router_1 = require('./router/router_1');

app.use('/aboutrouter',router_1);

app.listen(3000, () => {
  console.log('listen t0 3000')
})

 

 

 

위와 같이 응답이 오는 것을 확인할 수 있습니다.

경로가 많은 프로젝트에서 expree.Router를 통해 라우터를 분리함으로써 코드 복잡도를 낮출 수 있을 것입니다.

 

 

728x90