본문 바로가기
개발/Node.js

[Node.js] Routing 및 Router

by WaDDak 2024. 9. 2.

 

Routing 이란?

Routing은 클라이언트의 요청 조건(HTTP 메서드, 주소 등)에 대응해 응답(Response)하는 방식을 말합니다.

쉽게 말해 클라이언트가 요청한 URL을 기반으로, 해당 요청을 처리할 코드를 결정하는 과정을 말합니다.

 

Router 란?

여기서 말하는 Router는 클라이언트 요청을 쉽게 처리할 수 있게 도와주는 Express.js의 기본 기능중 하나입니다.

 

일반적으로 Router는 아래와 같은 구조를 가집니다.

router.METHOD(PATH, HANDLER);
  • router : Express.js의 라우터를 정의하기 위해 사용합니다.
  • METHOD : HTTP Method를 나타냅니다. (ex: get, post, put, delete 등)
  • PATH : 실제 서버에서 API를 사용하기 위한 경로를 나타냅니다.(ex : users, posts 등)
  • HANDLER : 라우트가 일치할 때 실행되는 함수입니다.

 

주요 개념

  1. URL패턴 매칭 :
    • 라우팅 시스템은 클라이언트의 요청 URL을 분석하고, 미리 정의된 URL 패턴과 매칭시킵니다.                              예를 들어 '/users/123'이라는 URL요청이 들어오면, 이 RUL 패턴에 맞는 특정 라우트가 선택됩니다.
    • 각 라우트는 특정 경로( /, /users, /products/:id) 와 HTTP 메서드로 정의 됩니다.
  2. 핸들러 함수 : 
    • 매칭된 URL 패턴에 따라, 핻당 요청을 처리할 핸들러 함수가 호출됩니다. 이 함수는 요청을 처리하고, 클라이언트에게 적절한 응답을 반환하는 역할을 합니다.
    • 예를 들어, '/users' 경로에 대한 GET요청을 처리하는 핸들러 함수는 데이터베이스에서 사용자 목록을 가져와 클라이언트에게 반환할 수 있습니다.
  3. 동적 경로 :
    • 라우팅 시스템은 동적 경로를 지원합니다. 동적 경로는 URL의 특정 부분을 변수처럼 사용하여 여러 요청을 하나의 라우트로 처리할 수 있게 합니다.
    • 예 : '/users/:id' 에서 :id는 동적 세그먼트로, '/users/1' , '/users/2' 등의요청을 하나의 라우트로 처리할 수 있습니다.
  4. 미들웨어와 라우팅 : 
    • 라우팅은 미들웨어와 함께 작동할 수 있습니다. 미들웨어는 특정 라우트 이전 또는 이후에 실행될 수 있으며, 인증, 로그 기록, 데이터 파싱 등의 작업을 처리할 수 있습니다.

 

Express.js에서의 라우팅 예시 :

const express = require('express');
const app = express();

// 기본 라우트 - 홈 페이지
app.get('/', (req, res) => {
    res.send('Welcome to the home page!');
});

// 사용자 목록 조회 라우트
app.get('/users', (req, res) => {
    // 예시: 사용자 목록을 데이터베이스에서 가져온 후 응답
    res.send(['User1', 'User2', 'User3']);
});

// 특정 사용자 조회 라우트 - 동적 경로 사용
app.get('/users/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`User ID: ${userId}`);
});

// 사용자 생성 라우트
app.post('/users', (req, res) => {
    // 예시: 새로운 사용자 생성 로직
    res.send('New user created');
});

// 서버 실행
app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

'개발 > Node.js' 카테고리의 다른 글

[Node.js] 데이터베이스와 MongoDB  (0) 2024.09.05
[Node.js] Request 와 Response  (0) 2024.09.02
[Node.js] API 와 REST API  (2) 2024.09.02
[Node.js] Express.js 프레임 워크  (0) 2024.08.30
[Node.js] Package Manager  (0) 2024.08.30