JS에서 node.js를 사용하여 서버를 구축한다면, express에 대해서 쉽게 접할 수 있을 것이다.
오늘은 express가 무엇인지, 왜 사용하는지에 대해서 정리해보았다.
https://expressjs.com/ko/ 사이트를 참고하면 설명에 'Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크'라고 되어있다.
이를 이해하기 위해서는 우선 '웹 프레임워크' 가 무엇인지 이해할 필요가 있다.
웹 프레임워크(Web framework)는 웹 애플리케이션 개발을 단순화하고 구조화하는 데 사용되는 도구나 라이브러리의 집합이다. 웹 프레임워크는 웹 애플리케이션을 구축하는 데 필요한 기본 구조, 패턴 및 기능을 제공하여 개발자가 더 효율적으로 작업할 수 있도록 도와주는 것인데 주로 아래와 같은 목적을 가진다.
그럼 이제 express라는 웹 프레임워크에 대해서 알아보자
"Express.js" 또는 "Express"는 Node.js 환경에서 웹 애플리케이션 및 API를 개발하기 위한 가장 인기 있는 웹 프레임워크 인데, Express는 간결하면서도 강력한 기능을 제공하여 Node.js를 기반으로 하는 서버 측 웹 어플리케이션을 빠르고 쉽게 개발할 수 있도록 도와준다.
그럼 어떤 측면에서 웹 어플리케이션을 빠르고 쉽게 개발할 수 있도록 도와준다고 할 수 있을까?
app.use(express.static('public'));
환경 설정과 의존성 로드: Express 애플리케이션을 만들기 위해 먼저 Express 모듈을 설치하고 의존성을 로드하는데, 기본적으로 Node.js 에서 Express 모듈을 설치하려면 npm 명령을 사용한다:
npm install express
Express 어플리케이션 생성: Express 어플리케이션을 생성하려면 express() 함수를 사용하는데, 이 함수는 Express 애플리케이션 객체를 반환한다.
const express = require('express');
const app = express();
위 설명에서와 같이 Express는 미들웨어를 사용하여 HTTP 요청과 응답을 처리하는데, 미들웨어는 Express 애플리케이션에 연결되며, 요청 처리 파이프라인에서 순차적으로 실행된다. app.use() 메서드를 사용하여 미들웨어를 추가하며, 각 미들웨어는 요청 객체(req)와 응답 객체(res)를 조작하고 조건이 맞는다면 다음 미들웨어로 넘기는 역할을 한다.
app.use(express.json());
// JSON 파싱 미들웨어
app.use(express.urlencoded({ extended: false }));
// URL-encoded 파싱 미들웨어
Express에서 라우팅은 URL 경로와 연결된 핸들러 함수를 설정하는 과정이다. app.get(), app.post(), app.put(), app.delete() 등의 메서드를 사용하여 라우팅을 설정하고 요청 경로와 핸들러 함수를 연결한다.
app.get('/', (req, res) => {
res.send('응답텍스트');
});
Express는 내부적으로 Node.js의 http 모듈을 사용하여 HTTP 서버를 생성하고 요청을 받아들인다. HTTP 서버를 시작하려면 app.listen() 메서드를 사용하면 된다.
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
HTTP 서버가 시작되면 클라이언트로부터의 요청이 들어올 때마다 Express는 라우팅된 핸들러 함수를 호출 및 요청 객체(req)와 응답 객체(res)를 이 함수에 전달하고, 핸들러 함수는 이러한 객체를 사용하여 클라이언트 요청을 처리한다.
핸들러 함수에서 요청 처리가 완료되면 res.send(), res.json(), res.render() 등의 메서드를 사용하여 응답을 클라이언트에 전송한다.