본문 바로가기
STUDY/ExpressJS

[5-1] Express.js 라우팅(Routing), 라우트(Route), 라우터(Router)

by Y.Choi 2023. 3. 29.
728x90
반응형

라우팅

라우팅(Routing)은 클라이언트가 요청한 URI(Uniform Resource Identifier)에 따라 적절한 핸들러 함수를 찾아 응답하는 것을 의미합니다.

 

라우팅은 웹 애플리케이션에서 매우 중요한 역할을 합니다. 

클라이언트의 요청이 올바르게 처리되지 않으면, 잘못된 응답을 보내거나, 서버의 오류를 유발할 수 있습니다. 따라서, 라우팅은 웹 애플리케이션의 구조를 결정하는 중요한 요소 중 하나입니다.

 

Express.js에서는 app.get(), app.post(), app.put(), app.delete() 등의 메소드를 사용하여 라우팅을 설정할 수 있습니다. 이들 메소드는 각각 GET, POST, PUT, DELETE 메소드에 대한 핸들러 함수를 등록하는 역할을 합니다. 

이 때, 요청을 분류하고 처리하기 위해 사용되는 경로(path)와 HTTP 메서드(method)를 라우트(route)라고 합니다.

라우터(Router)는 요청을 처리하는 데 필요한 로직을 구현합니다.

 

 

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

// GET /users
app.get('/users', (req, res) => { 
	res.send('Get a list of users');
});
    
// POST /users
app.post('/users', (req, res) => { 
	res.send('Create a new user');
});

 

위 코드는 app.get() 메소드와 app.post() 메소드를 사용하여 /users 경로에 대한 GET 요청과 POST 요청을 처리하는 기본 예제 입니다.

 

 

728x90

.

라우팅 · 라우트 · 라우터

 

개념을 이해하는 데에 있어서 이 비슷한 이름이 더 헷갈리게 느낄 수 있습니다. 라우팅(Routing), 라우트(Route), 라우터(Router)는 모두 웹 애플리케이션에서 특정 URL에 대한 처리를 담당하는 개념입니다. 하지만, 조금씩 다른 역할을 수행하고 있습니다.

 

위에서 살짝 설명 했듯이, 

라우트(Route)는 Express 애플리케이션의 HTTP 메소드와 URL 경로에 매핑되는 코드를 정의합니다. 즉, 라우트는 클라이언트의 HTTP 요청이 서버로 전달될 때 해당 요청에 대한 응답을 처리하는 데 사용됩니다. 이러한 라우트들을 정의해놓으면 Express가 이러한 경로에 대한 요청을 처리할 때, 라우트에 등록된 콜백 함수를 실행합니다.

라우터(Router)는 여러 개의 라우트(Route)를 모아서 하나의 미들웨어로 사용할 수 있도록 도와주는 것입니다. 일종의 라우트(Route) 그룹으로 생각할 수 있습니다. 라우터(Router)를 사용하면 특정 URL 경로에 대한 라우트(Route)를 한 번에 등록할 수 있어서 코드 구성이 더욱 간결해집니다.

라우팅(Routing)은 클라이언트의 HTTP 요청이 서버로 전달될 때, 해당 요청의 URL 경로에 따라 적절한 핸들러 함수를 찾아서 요청에 대한 처리를 수행하는 것을 의미합니다. 이러한 라우팅(Routing)을 통해, URL 경로를 통해 전달된 정보를 활용해 적절한 동작을 수행할 수 있습니다.

간단하게 말하자면, 

라우팅은 클라이언트가 보낸 요청에 대해 어떤 처리를 할지 결정하는 것이고, 

라우트(Route)는 이 처리를 위해 실행될 코드를 정의하는 것이며, 

라우터(Router)는 이러한 라우트(Route)들을 그룹화하여 구조화하는 것입니다.

 

 

아래는 라우터를 사용한 예시입니다.

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

// "/" 경로로 GET 요청이 오면 "Hello World!"를 응답하는 라우트
app.get('/', function (req, res) {
  res.send('Hello World!');
});

// "/users" 경로로 GET 요청이 오면 "User list"를 응답하는 라우트
app.get('/users', function (req, res) {
  res.send('User list');
});

// "/users/:userId" 경로로 GET 요청이 오면 해당하는 userId에 대한 정보를 응답하는 라우트
app.get('/users/:userId', function (req, res) {
  const userId = req.params.userId;
  res.send(`User ID: ${userId}`);
});

// "/users/:userId/books/:bookId" 경로로 GET 요청이 오면 해당하는 userId와 bookId에 대한 정보를 응답하는 라우트
app.get('/users/:userId/books/:bookId', function (req, res) {
  const userId = req.params.userId;
  const bookId = req.params.bookId;
  res.send(`User ID: ${userId}, Book ID: ${bookId}`);
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

 

하지만, 이런 식의 방식은 라우트 수가 많아질 수록 코드가 복잡해지기 때문에 그룹화를 하는 방식도 알아야 합니다. 

중복 코드를 줄이고 유지보수성을 높일 수 있도록 말이죠.

 

 


<질문> 

 

라우트 그룹화 하는 방법

 

 

728x90
반응형