Express.js는 Node.js를 기반으로 한 웹 애플리케이션 프레임워크입니다. 이 프레임워크는 HTTP 요청과 응답을 처리하고 라우팅, 미들웨어, 뷰 엔진 등을 제공하여 웹 서버를 빠르고 효율적으로 구축할 수 있게 해줍니다.
핵심 개념
라우팅
라우팅은 클라이언트의 요청에 따라 서버에서 처리할 핸들러 함수를 결정하는 과정입니다. Express.js에서 라우팅은 app.get()
, app.post()
, app.put()
과 같은 메서드를 사용하여 URL 패턴과 핸들러 함수를 매핑합니다. 예를 들면 다음과 같습니다.
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// 사용자 ID를 사용하여 데이터베이스에서 사용자 정보를 조회하고 응답 처리
});
이 경우, GET /users/1
요청은 /users/:id
패턴에 일치하여 라우팅되고, 해당 핸들러 함수가 실행됩니다.
미들웨어
미들웨어는 Express.js에서 중간에 실행되는 함수로, 요청과 응답 사이에서 작업을 수행합니다. 예를 들면 로깅, 인증, 데이터 파싱 등의 작업을 미들웨어로 처리할 수 있습니다. Express.js에서 미들웨어는 app.use()
메서드를 사용하여 추가할 수 있습니다. 예를 들면 다음과 같습니다.
app.use((req, res, next) => {
console.log('요청이 들어왔습니다.');
next();
});
이 경우, 모든 요청에 대해 미들웨어 함수가 실행되고, 로그를 출력한 후 next()
를 호출하여 다음 미들웨어로 넘어갈 수 있도록 합니다.
뷰 엔진
뷰 엔진은 Express.js에서 템플릿을 사용하여 동적인 HTML을 생성하는 역할을 합니다. 템플릿 엔진은 Express.js와 함께 설치되고, app.set('view engine', 'ejs')
와 같은 메서드를 사용하여 설정할 수 있습니다. 예를 들면 다음과 같습니다.
app.set('view engine', 'ejs');
app.get('/users', (req, res) => {
const users = ['Alice', 'Bob', 'Charlie'];
res.render('users', { users });
});
이 경우, users.ejs
라는 템플릿 파일을 사용하여 users
변수를 전달하여 동적인 HTML을 생성하고 응답으로 전송합니다.
요청 처리 흐름
- 클라이언트는 HTTP 요청을 서버로 보냅니다.
- Express.js는 요청에 대해 라우팅을 수행하여 해당 핸들러 함수를 실행합니다.
- 핸들러 함수에서는 요청에 따른 작업을 수행하고, 필요에 따라 다른 미들웨어를 호출하여 추가 작업을 수행합니다.
- 응답을 생성하여 클라이언트에게 반환합니다.
이와 같은 흐름을 통해 Express.js는 웹 애플리케이션을 효율적으로 처리하고 응답합니다.
더 자세한 내용은 Express.js 공식 문서를 참조하시기 바랍니다.