728x90
nodejs의 express를 사용하다보면 router를 사용하는 경우가 많다.
이 때 콜백 함수를 사용한다. 아래를 보자.
router.get('/', function (req, res, next) {
console.log('step2');
res.send('respond with a resource');
});
위와 같이 사용한다.
이때 req는 request의 줄임말로 받은 응답이 된다.
res는 response의 줄임말로 보내는 결과가 되게 될 것이다.
그런데 도대체 next의 정체는 무엇인가?
우리는 이 때 사용할 수 있는건 바로 api문서일 것이다.
http://expressjs.com/en/5x/api.html#router.param
express의 docs를 보면 미들웨어 함수로 보내진다고 한다.
공식문서를 봐서는 뭐라고 하는지 이해하기 힘들 수 있다.
그래서 더 간단히 말하려고한다.
현재 라우터에서 판단하지 않고 다음 라우터로 넘기겠다.
이는 사용하는 예제를 보면 확실하게 이해할 수 있다.
// step1.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
console.log('step1');
next();
});
module.exports = router;
간단한 로직인데 res를 사용해서 결과를 내지 않고 next를 사용해서 판단을 유보시킨다.
// step2.js
var express = require('express');
var router = express.Router();
router.get('/', function (req, res, next) {
console.log('step2');
res.send('respond with a resource');
});
module.exports = router;
이녀석은 뭐 특별하게 없다.
//app.js
var step1 = require('./routes/step1');
var step2 = require('./routes/step2');
app.use('/users', step1, step2);
app.js에서는 위와 같이 추가해준다.
놀라운게 있는데 app.use에 병렬적으로 붙혀준다.
그럼 실행예제를 보도록하자.
보면 알겠지만 step1이 우선실행되고 step2가 뒤에 실행된다.
이렇게 next는 현재에 판단하지않고 다음 router로 떠넘기는걸 알 수 있다.
단 조심해야할건 next에 파라메터를 넣게 되는순간 무조건 에러로 간다.
'Usage > JavaScript-NodeJS' 카테고리의 다른 글
[NodeJS]node 버전 관리하는 nvm (0) | 2019.09.24 |
---|---|
[NodeJS][Express][SQLite]Nodejs - express상에서 SQLite연동하기(회원가입을 예제로 만들기) (0) | 2019.06.20 |
[GraphQL][NodeJS][Express]graphql에서 Type System - Query, Scalar, Object(2) (0) | 2019.06.09 |
[GraphQL][NodeJS][Express]nodejs express에서 graphql 서버 만들기(1) (0) | 2019.06.08 |
[NodeJS][WebSocket][JavaScript]WebSocket 기초 사용하기, 단일 통신, server,client-(1) (0) | 2019.02.10 |