개요
Express.js는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크로, 특히 웹 서버와 API를 개발하는 데 널리 사용됩니다. Express는 미들웨어와 라우팅 기능을 제공하며, Node.js의 기능을 확장하고 개발자가 웹 애플리케이션을 더 쉽게 구축할 수 있도록 돕습니다.
특징
간결함과 유연성
- Express는 매우 가볍고 간결한 프레임워크로, 필요한 기능만 포함하고 있어 사용자가 원하는 대로 확장하고 맞춤화할 수 있습니다.
- 프레임워크가 복잡하지 않아 학습 곡선이 비교적 낮습니다.
미들웨어
Express의 핵심 개념 중 하나는 미들웨어입니다. 미들웨어는 요청과 응답 객체를 통해 각기 다른 작업을 수행하는 함수의 연속입니다.
다양한 서드파티 미들웨어를 사용할 수 있으며, 필요에 따라 직접 작성할 수도 있습니다.
const express = require('express');
const app = express();
// 미들웨어 예제
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
라우팅
Express는 강력하고 유연한 라우팅 시스템을 제공합니다. URL 경로와 HTTP 메서드에 따라 요청을 처리할 수 있습니다.
app.get('/user/:id', (req, res) => {
res.send(`User ID: ${req.params.id}`);
});
app.post('/user', (req, res) => {
res.send('Got a POST request');
});
app.put('/user/:id', (req, res) => {
res.send(`Updated User ID: ${req.params.id}`);
});
app.delete('/user/:id', (req, res) => {
res.send(`Deleted User ID: ${req.params.id}`);
});
템플릿 엔진
Express는 EJS, Pug, Handlebars 등 다양한 템플릿 엔진과 통합하여 동적인 HTML 페이지를 생성할 수 있습니다.
app.set('view engine', 'pug');
app.get('/hello', (req, res) => {
res.render('index', { title: 'Hey', message: 'Hello there!' });
});
정적 파일 제공
정적 파일(이미지, CSS 파일, JavaScript 파일 등)을 쉽게 제공할 수 있습니다.
app.use(express.static('public'));
환경 설정
Express 애플리케이션의 설정을 쉽게 구성할 수 있으며, 개발, 테스트, 프로덕션 환경에 맞게 설정을 분리할 수 있습니다.
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
사용 예시
프로젝트 초기화 및 Express 설치
mkdir myapp
cd myapp
npm init -y
npm install express
서버 코드 작성
server.js 파일을 생성하고 아래의 코드를 작성합니다.
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json()); // JSON 요청 본문을 파싱하기 위한 미들웨어
// 간단한 라우트 정의
app.get('/', (req, res) => {
res.send('Hello World!');
});
// RESTful API 엔드포인트 정의
let users = [
{ id: 1, name: 'John Doe' },
{ id: 2, name: 'Jane Doe' }
];
app.get('/users', (req, res) => {
res.json(users);
});
app.post('/users', (req, res) => {
const newUser = { id: users.length + 1, name: req.body.name };
users.push(newUser);
res.status(201).json(newUser);
});
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('User not found');
user.name = req.body.name;
res.json(user);
});
app.delete('/users/:id', (req, res) => {
const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
if (userIndex === -1) return res.status(404).send('User not found');
const deletedUser = users.splice(userIndex, 1);
res.json(deletedUser);
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
서버 실행
node server.js
참고 링크
문의사항이나 피드백은 댓글로 남겨주세요.
'프로그래밍 언어 > NEXT.JS' 카테고리의 다른 글
[NEXT.JS] SWR (0) | 2024.07.31 |
---|---|
[NEXT.JS] Axios (0) | 2024.07.31 |
[NEXT.JS] 환경변수 설정 (0) | 2024.07.11 |
[NEXT.JS] TypeScript(타입스크립트) (0) | 2024.07.11 |
[NEXT.JS] 정적 사이트 생성(SSG) (0) | 2024.07.11 |