Node.js 를 배워보자/4. Express 프레임워크

Express 프레임워크 라우팅 (Routing)

_Blue_Sky_ 2024. 9. 30. 22:00
728x90
728x90

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);
});
 
728x90

라우터 분리

큰 애플리케이션에서는 라우터를 분리하여 관리하는 것이 좋습니다. 각 기능별로 라우터를 만들고, 메인 애플리케이션에서 이들을 등록합니다.

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 라우팅에 대한 이해를 높이는 데 도움이 되었기를 바랍니다.

추가 학습

 

 

728x90
728x90