본문 바로가기

Programming/Node.js

7. 익스프레스 (2) - Router 객체를 통한 라우팅 4

node js logo image

 

 

 

라우팅 마무리입니다. app.js를 다시 살펴보면, 에러 처리용 미들위에 404 관련 미들웨어가 있습니다.

 

[app.js]

 

const express =require('express');
const morgan = require('morgan');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const dotenv = require('dotenv');
const path = require('path');

dotenv.config();
const indexRouter = require('./routes');
const userRouter = require('./routes/user');

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

app.use(morgan('dev'));
app.use(express.json());
app.use(express.urlencoded( {extended: false} ));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
        httpOnly: true,
        secure: false,
    },
    name: 'session-cookie',
}));

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

app.use((req, res, next) => {
    res.status(404).send('NOT FOUND');
});

app.use((err, req, res, next) => {
    console.error(err);
    res.status(500).send(err.message);
});

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

 

 

send('NOT FOUND')를 보내는 이 미들웨어는, 일치하는 라우터가 없을 경우 404 코드를 응답하는 역할을 해줍니다. 물론, 이러한 미들웨어가 없어도 익스프레스는 자체적으로 404 에러를 처리 해주지만 이러한 404 응답 미들웨어와 에러 처리 미들웨어를 별도로 작성해 주는 것을 권합니다. 

 

 

 


 

 

 

마지막으로 라우터에서 자주 사용하는 app.route나 router.route가 있습니다. 사용하다보면 호출 주소는 같지만 메서드만 다른 경우를 만나보게 될 것입니다. 

 

router.get('/abc', (req, res) => {
    res.send('GET /abc');
});

router.get('/abc', (req, res) => {
    res.send('POST /abc');
});

 

 

위와 같은 경우가 있다고 가정했을 때, 아래와 같이 묶어서 가독성 있는 코드를 만들 수도 있습니다. 

 

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