Express는 작고 유연한 Node.js 웹 어플리케이션 프레임워크이다.
특히, middleware를 이용해 라우팅을 가볍고 유연하게한다.
작은 모듈이라고 생각하면 된다. Expressjs팀에서 제공하는 미들웨어도 있고, 직접 만들어 사용할 수도 있다.
라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것이다.
app.METHOD(PATH, HANDLER)
같은 경로에 여러 메소드 연결할 때 사용
app.all('/customer', function (req, res) {
res.send('Got a ALL request at /customer');
});
핸들러는 라우트가 일치할 때 실행되는 콜백함수. 두 개 이상을 사용할 수도 있다. 콜백 함수 배열로 라우트를 처리할 수도 있다.
app.get('/example/c', [ex0, ex1, ex2]);
express.Router() 클래스를 사용하면 라우트 처리를 여러 개의 파일로 분리해서 각각의 용도에 맞게 구현하여 사용할 수 있다.
/* /routes/product.js 생성 */
----------------------------------------------------------------------------------------------------------
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.send('상품 정보 조회');
});
router.post('/insert', function(req, res) {
res.send('신규 상품 추가');
});
router.put('/update', function(req, res) {
res.send('상품 정보 수정');
});
router.delete('/delete', function(req, res) {
res.send('상품 정보 삭제');
});
module.exports = router;
----------------------------------------------------------------------------------------------------------
/* app.js 수정 */
----------------------------------------------------------------------------------------------------------
const express =require('express');
const productRoute = require('./routes/product');
const app = express();
const port = 3000
app.use(express.json({
limit: '50mb' // 최대 50메가
})); // 클라이언트 요청 body를 json으로 파싱 처리
app.listen(port, () => {
console.log(`서버가 실행됩니다. ${port}`)
});
app.use('/product', productRoute); // product 라우트를 추가하고, 기본 경로로 /product 사용
----------------------------------------------------------------------------------------------------------
Express 내장 에러 핸들러가 있다. 일반적인 미들웨어 함수를 정의하는 것처럼 정의한다.
참고로 에러처리 코드는 라우트 정의 마지막에 하고, (err,req,res,next)라는 인자가 있는 함수를 Express에서 에러처리를 위한 함수로 약속돼있다.
// 에러 발생시 logHandler 실행 이후 errorHandler가 실행 됩니다.
app.use(logHandler);
app.use(errorHandler);
// logger middleware
function logHandler(err, req, res, next) {
console.error('[' + new Date() + ']\n' + err.stack);
next(err);
}
// error handler middleware
function errorHandler(err, req, res, next) {
res.status(err.status || 500);
res.send(err.message || 'Error!!');
}
참고 및 출처