Router 객체 사용하기

Lia·2021년 6월 27일
1

Node.js

목록 보기
3/5
Contents
1. 미들웨어와 라우터 객체의 차이점
2. 라우팅 분리하기
3. next('route')
4. 라우터 주소에 특수 패턴 사용하기
5. METHOD 분리하기

# 01 - 미들웨어와 라우터 객체의 차이점

미들웨어와 라우터 객체의 차이점은 Express.js 공식문서에서도 따로 구분을 하고 있지는 않습니다.

하지만 Router 객체를 이용해서 라우터를 분리할 수 있습니다.


# 02 - 라우팅 분리하기

// index.js

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

router.get('/', (req, res) => {
	res.send('Hello This is Index Page');
});

module.exports = router;
// user.js

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

router.get('/', (req, res) => {
	res.send('Hello This is User Page');
});

module.exports = router;
// app.js

const express = require('express');

const indexRouter = require('index');
const userRouter = require('user');

const app = express();
app.set('port', process.env.PORT || 3000);

app.use('/', indexRouter);
app.use('/user', userRouter);

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

index.js, user.js, app.js 파일들을 다음과 같이 작성하고

node app.js
app.js 를 실행시켜주고 각각 localhost:3000, localhost:3000/user 에 접속하게 되면
Hello This is Index Page, Hello This is User Page 메시지를 확인할 수 있습니다.


# 03 - next('route')

미들웨어에서 next() 함수를 사용하여 다음 미들웨어로 넘어갈 수 있습니다.
미들웨어 뿐만 아니라 라우터에서도 이와 같이 다음 라우터로 넘어갈 수 있습니다.
next('route') 를 사용하여 라우터에 연결된 나머지 미들웨어들을 건너뛰고
다음 라우터로 넘어갈 수 있습니다.

router.get('/', (req, res, next) => {
	console.log('첫 번째 라우터의 미들웨어 실행');
    	next('route');
}, (req, res, next) => {
	console.log('이 미들웨어는 실행되지 않습니다.');
});

router.get('/', (req, res, next) => {
	console.log('두 번째 라우터가 실행됨');
});

next('route') 를 호출하게 되면 일치하는 주소의 다음 라우터로 넘어가게 됩니다.


# 04 - 라우터 주소에 특수 패턴 사용하기

라우터 주소에는 정규표현식을 사용할 수 있고 특수 패턴 또한 사용할 수 있습니다.
특수 패턴 중 라우트 매개변수 라고 불리는 패턴은 다음과 같습니다.

router.get('/user/:id', (req, res) => {
	console.log(req.params, req.query);
});

라우트 매개변수를 위와 같이 사용하게 되면 라우터는 /user/1234 /user/1 과 같은 요청도 위 라우터가 처리하게 됩니다. 만약 /user/12345678?age=5&exp=9 요청이 들어오고
req.paramsreq.query 를 출력해 보면

{ id: '12345678' } { age: '5', exp: '9' }
위와 같이 출력되게 됩니다.


# 05 - METHOD 분리하기

app.route 혹은 router.route 를 사용해서 요청 METHOD를 분리시킬 수 있습니다.
이렇게 사용하게 되면 같은 요청 path의 코드들을 한데 묶어 볼 수 있어서 편리합니다.

router.route('/path')
	.get((req, res) => {
    		res.send('GET /path');
    	})
        .post((req, res) => {
        	res.send('POST /path');
        });



본 블로그는 조현영(zerocho)님의 저서 'Node.js 교과서 개정2판'을 참고하여 정리한 글입니다. 이점 참고 부탁드립니다.

profile
하고싶은게 많아요

0개의 댓글