Express 시작하기

하람·2024년 7월 5일

Express 서버

목록 보기
2/7

Express

Express는 작고 유연한 Node.js 웹 어플리케이션 프레임워크이다.
특히, middleware를 이용해 라우팅을 가볍고 유연하게한다.

Middleware란?

작은 모듈이라고 생각하면 된다. Expressjs팀에서 제공하는 미들웨어도 있고, 직접 만들어 사용할 수도 있다.

라우팅

라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것이다.

기본 라우팅

app.METHOD(PATH, HANDLER)

app.all()

같은 경로에 여러 메소드 연결할 때 사용

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!!');
}

참고 및 출처

profile
강하고 담대하라 두려워하지 말라

0개의 댓글