Express 프레임워크에서 라우팅(Routing) 개념 심층 분석
서론
Node.js 기반 웹 애플리케이션 개발에서 Express는 가장 인기 있는 프레임워크 중 하나입니다. Express는 다양한 기능을 제공하지만, 그 중에서도 라우팅은 웹 애플리케이션의 핵심적인 부분을 담당합니다. 라우팅은 들어오는 HTTP 요청을 적절한 처리 함수로 연결하는 과정을 의미하며, 이를 통해 웹 애플리케이션의 구조를 명확하게 정의하고 유지보수를 용이하게 만들 수 있습니다.
본 글에서는 Express 프레임워크에서 라우팅이 무엇인지, 왜 중요한지, 그리고 어떻게 사용하는지에 대해 자세히 알아보겠습니다. 라우팅의 기본 개념부터 다양한 라우팅 방법, 미들웨어와의 연동, 그리고 실제 예시까지 폭넓게 다루어, Express 라우팅에 대한 이해를 높이는 데 도움을 드릴 것입니다.
라우팅이란 무엇인가?
라우팅은 웹 서버가 클라이언트로부터 받은 HTTP 요청을 분석하여 어떤 요청인지 파악하고, 해당 요청을 처리할 적절한 함수를 찾아 실행하는 과정입니다. 예를 들어, 사용자가 웹 브라우저 주소창에 http://localhost:3000/users를 입력하면, 서버는 이 요청이 /users라는 경로를 가진 GET 요청임을 파악하고, 미리 정의된 /users 경로에 대한 처리 함수를 실행하여 사용자 목록을 반환합니다.
Express에서 라우팅의 중요성
- 구조적인 코드: 라우팅을 통해 코드를 경로별로 분리하여 관리할 수 있어 코드의 가독성과 유지보수성을 높일 수 있습니다.
- 다양한 HTTP 메서드 지원: GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원하여 RESTful API 개발에 적합합니다.
- 동적 경로: 변수를 사용하여 동적 경로를 생성하여 유연한 라우팅이 가능합니다.
- 미들웨어와의 통합: 라우팅 과정에서 미들웨어를 사용하여 요청을 가로채거나 응답을 수정할 수 있습니다.
Express 라우팅 기본
Express에서 라우팅을 위해 express.Router() 객체를 사용합니다. 이 객체는 라우트를 정의하고 관리하는 역할을 합니다.
const express = require('express');
const app = express();
const router = express.Router();
// 라우트 정의
router.get('/', (req, res) => {
res.send('Hello, world!');
});
// 라우터 등록
app.use('/', router);
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
위 코드에서 router.get('/')는 루트 경로에 대한 GET 요청을 처리하는 라우트를 정의합니다. app.use('/')는 이 라우터를 애플리케이션에 등록합니다.
다양한 라우팅 방법
- 정적 경로: /users, /products와 같이 정적인 경로를 정의합니다.
- 동적 경로: /:id와 같이 변수를 사용하여 동적인 경로를 정의합니다.
- 정규 표현식: 정규 표현식을 사용하여 복잡한 경로를 정의할 수 있습니다.
미들웨어와 라우팅
미들웨어는 요청과 응답 사이에서 실행되는 함수입니다. 라우팅 과정에서 미들웨어를 사용하여 인증, 권한 확인, 로그 기록 등 다양한 작업을 수행할 수 있습니다.
router.get('/users/:id', (req, res, next) => {
// 사용자 정보 조회
const user = getUserById(req.params.id);
if (!user) {
return next(new Error('User not found'));
}
res.json(user);
});
라우터 분리
큰 애플리케이션에서는 라우터를 분리하여 관리하는 것이 좋습니다. 각 기능별로 라우터를 만들고, 메인 애플리케이션에서 이들을 등록합니다.
const usersRouter = require('./users');
const productsRouter = require('./products');
app.use('/users', usersRouter);
app.use('/products', productsRouter);
실제 예시: RESTful API 만들기
const express = require('express');
const app = express();
app.get('/users', (req, res) => {
// 모든 사용자 정보 조회
const users = getAllUsers();
res.json(users);
});
app.get('/users/:id', (req, res) => {
// 특정 사용자 정보 조회
const user = getUserById(req.params.id);
res.json(user);
});
app.post('/users', (req, res) => {
// 새로운 사용자 생성
const newUser = createUser(req.body);
res.status(201).json(newUser);
});
결론
Express에서 라우팅은 웹 애플리케이션의 핵심적인 부분입니다. 라우팅을 효과적으로 활용하면 코드의 가독성과 유지보수성을 높이고, 다양한 기능을 구현할 수 있습니다. 본 글에서는 Express 라우팅의 기본 개념부터 실제 예시까지 다루었으며, 이를 통해 Express 라우팅에 대한 이해를 높이는 데 도움이 되었기를 바랍니다.
추가 학습
- Express 공식 문서: https://expressjs.com/
- Node.js 공식 문서: https://nodejs.org/
- RESTful API 설계 가이드
'Node.js 를 배워보자 > 4. Express 프레임워크' 카테고리의 다른 글
Express 프레임워크 템플릿 엔진 (Pug, EJS 등) (0) | 2024.09.30 |
---|---|
Express 프레임워크 미들웨어 (Middleware) (0) | 2024.09.30 |
Express 프레임워크 설치 및 초기 설정 (0) | 2024.09.30 |
Express 프레임워크란 무엇인가요? (0) | 2024.09.30 |