프로그래밍/Nest.js

Nest.js에서의 라우팅 및 요청 처리: 요청 매핑의 중요성

shimdh 2025. 3. 16. 20:44
728x90

웹 애플리케이션 개발에서 라우팅과 요청 처리는 필수적인 요소입니다. 특히 Nest.js와 같은 프레임워크를 사용할 때, 이러한 요소들은 애플리케이션의 구조와 흐름을 결정짓는 중요한 역할을 합니다. 이번 포스트에서는 Nest.js에서의 라우팅 설정과 요청 매핑에 대해 깊이 있게 살펴보겠습니다.

라우팅의 중요성

라우팅은 클라이언트의 요청을 특정 핸들러로 전달하는 과정으로, 사용자가 원하는 자원에 접근할 수 있도록 돕습니다. 이는 단순히 요청을 전달하는 것 이상의 의미를 가지며, 애플리케이션의 전반적인 구조와 흐름을 결정짓는 중요한 요소입니다.

1. 라우팅 설정

라우팅 설정은 주로 컨트롤러에서 이루어집니다. Nest.js에서는 컨트롤러가 URL 경로와 관련된 모든 로직을 담당하며, 이를 통해 HTTP 메서드(GET, POST 등)를 매핑할 수 있습니다. 컨트롤러는 요청을 처리하는 메서드를 정의하고, 각 메서드는 특정 경로와 HTTP 메서드에 연결되어 클라이언트의 요청을 적절히 처리합니다.

예제: 간단한 사용자 관리 API

import { Controller, Get, Post, Body } from '@nestjs/common';

@Controller('users')
export class UsersController {
    private users = [];

    @Get()
    getAllUsers() {
        return this.users;
    }

    @Post()
    createUser(@Body() user) {
        this.users.push(user);
        return user;
    }
}

위 코드에서 @Controller('users') 데코레이터는 /users라는 기본 경로를 지정합니다. 그리고 @Get()@Post() 데코레이터를 사용하여 GET 및 POST 요청을 각각 처리하는 메서드를 정의했습니다. 이러한 설정을 통해 클라이언트는 /users 경로로 GET 요청을 보내면 모든 사용자 정보를 받을 수 있고, POST 요청을 통해 새로운 사용자를 생성할 수 있습니다.

2. 요청 매핑

요청 매핑은 클라이언트의 요청 데이터(경로 파라미터나 쿼리 파라미터 등)를 서버 측으로 전달하여 적절한 처리를 하도록 하는 과정입니다. 이 과정은 클라이언트가 보낸 정보를 기반으로 서버가 어떤 작업을 수행할지를 결정하는 중요한 단계입니다.

2.1 경로 매개변수

경로 매개변수는 URL의 일부로 포함되어 있는 값을 의미합니다. 이러한 값들은 대개 리소스의 고유 식별자(ID) 등을 나타내며, 이를 통해 특정 리소스를 쉽게 조회할 수 있습니다.

예제: 사용자 ID 기반 조회
@Get(':id')
getUserById(@Param('id') id: string) {
    return this.users.find(user => user.id === id);
}

위 코드에서 @Get(':id')/users/:id 형태의 URL에 대한 GET 요청을 처리합니다. 클라이언트가 특정 사용자 ID를 제공하면 해당 사용자를 반환하게 됩니다. 이 방식은 RESTful API 설계에서 매우 일반적이며, 클라이언트가 필요한 정보를 효율적으로 요청할 수 있도록 돕습니다.

2.2 쿼리 매개변수

쿼리 매개변수는 URL 끝에 붙는 추가 정보입니다(예: ?name=John&age=30). 이를 통해 필터링이나 정렬 등의 기능 구현이 가능합니다. 쿼리 매개변수는 클라이언트가 요청하는 데이터의 범위를 좁히거나 특정 조건에 맞는 데이터를 검색할 수 있도록 해줍니다.

예제: 이름으로 사용자 검색
@Get('search')
searchUsers(@Query('name') name: string) {
    return this.users.filter(user => user.name.includes(name));
}

여기서는 /users/search?name=John과 같은 쿼리를 통해 이름이 "John"인 사용자를 찾습니다. 이와 같은 기능은 사용자 경험을 향상시키고, 클라이언트가 원하는 정보를 보다 쉽게 찾을 수 있도록 도와줍니다.

요약

Nest.js에서 라우팅 및 요청 처리는 웹 애플리케이션의 핵심적인 부분이며, 다음과 같은 주요 요소들이 포함됩니다:

  • 컨트롤러: 각 엔드포인트에 대한 책임을 지며, 요청을 처리하는 메서드를 정의합니다.
  • HTTP 메서드: GET, POST 등 다양한 방법으로 데이터를 전송하고 받으며, 각 메서드는 특정 작업을 수행합니다.
  • 경로 및 쿼리 파라미터: 클라이언트가 보낸 정보를 바탕으로 필요한 작업을 수행하며, 이를 통해 데이터의 필터링 및 검색이 가능합니다.

이러한 구조적 접근 방식 덕분에 Nest.js를 이용하면 복잡한 비즈니스 로직도 효율적으로 관리할 수 있으며, 개발자는 보다 직관적이고 유지보수가 용이한 코드를 작성할 수 있습니다.

728x90