app.use()에 대해

김무연·2023년 12월 15일

Backend

목록 보기
39/49

미들웨어 레벨

미들웨어 동작 레벨은 두 가지로 나뉘어 진다.

  1. 애플리케이션 레벨

  2. 라우터 레벨

단계는 애플리케이션 => 라우터 단계로 실행순서가 이루어 진다.

애플리케이션 레벨과 라우터 레벨은 실행단계의 차이지 기능적으론 다른 점이 없다.

애플리케이션 분기 + 라우터 분기로 더 세세하게 요청 url을 분리하여 제어가 가능하다는 점

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

app.use('/', indexRouter);
app.use('/users', usersRouter);

위의 예는 애플리케이션 단계에서 '/' 와 '/users'로 URL을 분리하여 처리를 하도록 한것이다.

또한 callback 인자에 express.Router() 오브젝트를 생성하여 넣음으로 라우터 단계에서의 URL 제어도 가능 하도록 등록하였다.

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

/* GET users listing. */
router.get('/', function(req, res, next) {
  console.log('originalUrl : '+req.originalUrl);
  console.log('baseUrl : '+req.baseUrl);
  console.log('path : '+req.path);
  res.send('respond with a resource');
});

router.get('/user', function(req, res, next) {
  console.log('originalUrl : '+req.originalUrl);
  console.log('baseUrl : '+req.baseUrl);
  console.log('path : '+req.path);
  res.send('respond with a resource');
});

module.exports = router;

위의 예는 라우터 단계의 미들웨어다.

app.use() 처럼 router.use()도 쓸 수 있고 app.METHOD() 처럼 router.METHOD()도 사용 가능하다.

use와 METHOD의 다른점은 use()는 모든 METHOD에서 동작한다는 것이고 METHOD()는 지정된 요청(GET, POST, PUT, DELETE 등)에서만 동작을 한다는 것

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글