Express (Express) 소개 및 사용법
Express는 Node.js를 위한 웹 애플리케이션 프레임워크로, 서버 측 애플리케이션 및 API를 쉽게 구축할 수 있게 도와주는 도구입니다. Express는 간결하고 유연한 설계를 통해 빠르고 효율적인 웹 서버를 개발할 수 있도록 지원합니다.
Express란 무엇인가? (What is Express?)
Express는 Node.js 플랫폼 위에서 작동하는 경량의 웹 애플리케이션 프레임워크입니다. 주요 목적은 웹 서버를 구축하는 것을 단순화하고, HTTP 요청 및 응답을 처리하는 데 필요한 기본적인 기능을 제공하는 것입니다. Express는 중간 소프트웨어(middleware)를 활용하여 요청을 처리하며, RESTful API 및 웹 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다.
Express 설치 (Installing Express)
Express를 사용하려면 먼저 Node.js가 설치되어 있어야 합니다. 그런 다음, npm(Node Package Manager)을 사용하여 Express를 설치할 수 있습니다.
npm install express
이 명령은 Express와 그에 필요한 종속성을 node_modules
디렉토리에 설치합니다.
Express 기본 서버 설정 (Basic Server Setup)
Express를 사용하여 간단한 웹 서버를 설정하는 방법은 다음과 같습니다.
- 프로젝트 디렉토리 설정 (Setting Up Project Directory) 프로젝트 디렉토리를 만들고,
package.json
파일을 생성합니다.
mkdir my-express-app cd my-express-app npm init -y
- Express 설치 (Installing Express) Express를 설치합니다.
npm install express
- 서버 코드 작성 (Writing Server Code)
index.js
파일을 생성하고, 기본적인 Express 서버를 설정합니다.
const express = require('express'); const app = express(); const port = 3000; // 기본 라우트 (Basic Route) app.get('/', (req, res) => { res.send('Hello World!'); }); // 서버 시작 (Starting Server) app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
위 코드에서 express()
는 Express 애플리케이션 인스턴스를 생성하며, app.get()
메서드는 HTTP GET 요청을 처리하는 기본 라우트를 정의합니다. app.listen()
메서드는 서버를 시작합니다.
미들웨어 사용 (Using Middleware)
Express의 미들웨어는 요청과 응답 사이에서 동작하는 함수입니다. 미들웨어를 사용하여 요청을 처리하거나 응답을 수정할 수 있습니다.
- 기본 미들웨어 (Basic Middleware) Express는 다양한 내장 미들웨어를 제공합니다. 예를 들어, JSON 요청 본문을 파싱하려면
express.json()
미들웨어를 사용할 수 있습니다.
const express = require('express'); const app = express(); const port = 3000; // JSON 본문 파싱 미들웨어 (JSON Body Parsing Middleware) app.use(express.json()); app.post('/data', (req, res) => { res.json({ receivedData: req.body }); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
위 코드에서 app.use(express.json())
는 모든 들어오는 요청의 JSON 본문을 자동으로 파싱합니다.
- 커스텀 미들웨어 (Custom Middleware) 커스텀 미들웨어를 정의하여 요청을 로깅하거나 인증을 처리할 수 있습니다.
const express = require('express'); const app = express(); const port = 3000; // 커스텀 미들웨어 (Custom Middleware) app.use((req, res, next) => { console.log(`Request URL: ${req.url}`); next(); }); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
위 코드에서 커스텀 미들웨어는 요청 URL을 콘솔에 로그하고, next()
를 호출하여 요청 처리를 계속합니다.
라우팅 (Routing)
Express에서는 다양한 라우트와 HTTP 메서드를 사용하여 요청을 처리할 수 있습니다.
- 간단한 라우트 (Simple Routes)
const express = require('express'); const app = express(); const port = 3000; // 라우트 정의 (Defining Routes) app.get('/', (req, res) => { res.send('Home Page'); }); app.get('/about', (req, res) => { res.send('About Page'); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
이 예제에서는 두 개의 GET 요청 라우트를 정의합니다.
- 파라미터를 포함한 라우트 (Routes with Parameters) Express에서는 URL 파라미터를 사용하여 동적 라우트를 정의할 수 있습니다.
const express = require('express'); const app = express(); const port = 3000; // 파라미터를 사용하는 라우트 (Routes with Parameters) app.get('/users/:userId', (req, res) => { const userId = req.params.userId; res.send(`User ID: ${userId}`); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
위 코드에서 :userId
는 URL 파라미터를 정의하며, req.params.userId
를 통해 파라미터 값을 가져올 수 있습니다.
템플릿 엔진 (Template Engines)
Express는 다양한 템플릿 엔진을 지원하여 동적인 HTML 페이지를 생성할 수 있습니다. 예를 들어, Pug 템플릿 엔진을 사용할 수 있습니다.
- Pug 설치 및 설정 (Installing and Setting Up Pug)
npm install pug
Express 앱에서 Pug를 사용하려면 view engine
을 설정합니다.
const express = require('express'); const app = express(); const port = 3000; // 템플릿 엔진 설정 (Setting Up Template Engine) app.set('view engine', 'pug'); app.set('views', './views'); app.get('/', (req, res) => { res.render('index', { title: 'Home Page', message: 'Welcome to Express!' }); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
views/index.pug
파일:
doctype html html head title= title body h1= message
위 코드에서 res.render()
메서드를 사용하여 Pug 템플릿을 렌더링합니다.
에러 핸들링 (Error Handling)
Express에서는 에러 핸들링 미들웨어를 사용하여 발생한 에러를 처리할 수 있습니다.
const express = require('express'); const app = express(); const port = 3000; // 라우트 정의 (Route Definition) app.get('/', (req, res) => { res.send('Home Page'); }); // 404 에러 핸들링 (404 Error Handling) app.use((req, res, next) => { res.status(404).send('Sorry, cannot find that!'); }); // 에러 핸들링 미들웨어 (Error Handling Middleware) app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something broke!'); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
위 코드에서 app.use()
를 사용하여 404 에러와 서버 에러를 처리하는 미들웨어를 설정합니다.
Express는 간결하고 강력한 기능을 제공하여 Node.js를 사용하는 웹 애플리케이션 개발을 단순화합니다. 이 프레임워크는 중간 소프트웨어를 사용하여 유연한 요청 처리를 지원하고, 다양한 기능과 플러그인을 통해 필요한 기능을 쉽게 추가할 수 있습니다.