Node.js를 위한 간편하고 유연한 웹 애플리케이션 프레임워크입니다. Express를 사용하면 더욱 쉽고 빠르게 웹 서버와 웹 애플리케이션을 개발할 수 있습니다.
미들웨어 지원
Express는 미들웨어를 사용하여 요청과 응답을 처리하고 조작할 수 있습니다. 이를 통해 요청을 처리하는 과정을 모듈화하고 재사용할 수 있습니다.
라우팅
Express는 간단하고 유연한 라우팅을 제공하여 URL에 따라 적절한 핸들러 함수를 실행할 수 있습니다. 이를 통해 웹 애플리케이션의 라우팅 로직을 쉽게 관리할 수 있습니다.
템플릿 엔진
Express는 다양한 템플릿 엔진과 함께 사용할 수 있습니다. 이를 통해 서버 측에서 동적으로 HTML을 생성하고 렌더링할 수 있습니다.
HTTP 유틸리티
Express는 HTTP 요청과 응답을 처리하기 위한 다양한 유틸리티 함수를 제공합니다. 이를 통해 HTTP 요청과 응답을 쉽게 다룰 수 있습니다.
// express example
const express = require('express');
const app = express();
// 라우트 정의
app.get('/', function(req, res) {
res.send('Express 애플리케이션에 오신 것을 환영합니다!');
});
// 서버 시작
const port = 3000;
app.listen(port, function() {
console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});

Express 미들웨어는 Express.js 프레임워크에서 HTTP 요청과 응답을 처리하는 중간에 위치하는 함수입니다. 미들웨어 함수는 요청 객체(request), 응답 객체(response), 그리고 애플리케이션의 요청-응답 주기를 제어하는 next 함수에 대한 액세스 권한을 갖습니다. Express 애플리케이션은 미들웨어를 사용하여 라우팅, 오류 처리, 로깅 등의 다양한 기능을 추가할 수 있습니다.
내장 미들웨어: Express에 기본적으로 내장된 미들웨어로, 별도의 설치 없이 사용할 수 있습니다. 대표적인 내장 미들웨어로는 express.static, express.json, express.urlencoded 등이 있습니다.
서드 파티 미들웨어: 개발자들이 만든 미들웨어로, Express 애플리케이션에 추가하여 사용할 수 있습니다. 대표적으로는 body-parser, morgan, cors 등이 있습니다.
사용자 정의 미들웨어: 개발자가 직접 만든 미들웨어로, Express 애플리케이션에서 필요에 따라 추가할 수 있습니다. 사용자 정의 미들웨어는 요청과 응답을 조작하거나 특정 작업을 수행할 때 사용됩니다.
const express = require('express');
const app = express();
// 정적 파일 제공 미들웨어
app.use(express.static('public'));
// JSON 파싱 미들웨어
app.use(express.json());
// URL 인코딩 미들웨어
app.use(express.urlencoded({ extended: true }));
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
// 서드 파티 미들웨어 사용법
app.use(bodyParser.json());
const express = require('express');
const app = express();
// 사용자 정의 미들웨어
function customMiddleware(req, res, next) {
// 미들웨어 로직 작성
console.log('사용자 정의 미들웨어 동작');
next(); // 다음 미들웨어로 제어를 넘깁니다.
}
// 사용자 정의 미들웨어 사용법
app.use(customMiddleware);
// body-parser
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json()); // JSON 형식의 요청 본문 파싱
app.use(bodyParser.urlencoded({ extended: true })); // URL-encoded 형식의 요청 본문 파싱
// cors
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
// morgan
const express = require('express');
const morgan = require('morgan');
const app = express();
app.use(morgan('dev')); // 개발용 로깅 설정
// helmet
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
// express-validator
const express = require('express');
const { check, validationResult } = require('express-validator');
const app = express();
app.post('/user', [
check('username').isEmail(),
check('password').isLength({ min: 5 })
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
// 유효성 검사 통과 시 처리
});
// express-jwt
const express = require('express');
const jwt = require('express-jwt');
const secret = 'your-secret-key';
const app = express();
app.use(jwt({ secret: secret }).unless({ path: ['/login'] }));
app.get('/protected', (req, res) => {
// 인증된 요청에만 접근 가능한 경로
});