프로그래밍/Nest.js

라우팅 및 요청 처리: 경로 매개변수와 쿼리 매개변수의 이해

shimdh 2025. 3. 17. 10:06
728x90

웹 애플리케이션 개발에서 라우팅은 클라이언트의 요청을 적절한 서버 측 로직으로 연결하는 중요한 과정입니다. 특히 RESTful API를 구축할 때, 라우팅 시스템은 URL 경로와 HTTP 메서드를 기반으로 작동하여 클라이언트가 요청한 리소스에 대한 적절한 응답을 제공합니다. 이번 포스트에서는 라우팅의 기본 개념과 함께 경로 매개변수 및 쿼리 매개변수의 활용 방법에 대해 자세히 알아보겠습니다.

라우팅의 중요성

라우팅은 클라이언트의 요청을 특정 컨트롤러와 메서드에 연결하는 과정으로, 애플리케이션이 HTTP 요청을 어떻게 처리할지를 정의합니다. 이 과정은 다음과 같은 이유로 매우 중요합니다:

  1. 요청 처리의 일관성: 라우팅을 통해 모든 요청이 일관된 방식으로 처리되므로, 애플리케이션의 유지보수성이 향상됩니다.
  2. RESTful API 설계: RESTful API를 설계할 때, 라우팅은 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 명확하게 정의하는 데 필수적입니다.
  3. 유연한 데이터 처리: 경로 매개변수와 쿼리 매개변수를 통해 동적인 데이터 처리가 가능해집니다.

경로 매개변수

경로 매개변수는 URL의 일부로 포함되는 변수로, 동적인 데이터를 전달하는 데 매우 유용합니다. 예를 들어, 특정 사용자의 정보를 가져오기 위해 다음과 같은 URL 구조를 사용할 수 있습니다:

GET /users/:id

여기서 :id는 사용자 ID를 나타내며, 실제 요청 시에는 숫자나 문자열 값으로 대체됩니다. Nest.js에서는 이를 쉽게 처리할 수 있도록 @Param 데코레이터를 제공하여, 개발자가 간편하게 경로 매개변수를 사용할 수 있도록 돕습니다.

예제 코드

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

@Controller('users')
export class UsersController {
  @Get(':id')
  getUser(@Param('id') id: string) {
    return `User ID is ${id}`;
  }
}

위의 코드에서 getUser 메서드는 클라이언트가 제공한 사용자 ID에 따라 적절한 응답을 생성합니다. 이처럼 경로 매개변수를 활용하면, 다양한 사용자 요청에 유연하게 대응할 수 있습니다.

쿼리 매개변수

쿼리 매개변수는 URL의 '?' 뒤에 위치하며, 여러 개의 값을 전달할 수 있는 방법입니다. 일반적으로 검색이나 필터링 기능에서 많이 사용되며, 이를 통해 클라이언트는 서버에 추가적인 정보를 제공할 수 있습니다. 예를 들어:

GET /users?age=25&active=true

이 경우 ageactive 두 개의 쿼리 매개변수를 통해 조건부 필터링이 가능합니다. 이를 통해 클라이언트는 특정 조건에 맞는 사용자 목록을 요청할 수 있습니다.

예제 코드

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

@Controller('users')
export class UsersController {
  @Get()
  getUsers(@Query() query) {
    const age = query.age;
    const active = query.active === 'true'; // 문자열 비교
    return `Filtering users by age: ${age} and active status: ${active}`;
  }
}

위 코드는 쿼리 매개변수를 통해 사용자 목록을 필터링하는 간단한 로직을 보여줍니다. 이를 통해 클라이언트는 더욱 세부적인 조건으로 데이터를 요청할 수 있으며, 서버는 이에 맞는 응답을 제공할 수 있습니다.

요약

  • 라우팅은 클라이언트 요청과 서버 측 처리를 연결하는 중요한 요소로, 애플리케이션의 전반적인 구조와 흐름을 결정합니다.
  • 경로 매개변수는 동적 데이터를 URL 경로 내에서 전송하여, 특정 리소스에 대한 요청을 보다 유연하게 처리할 수 있게 합니다.
  • 쿼리 매개변수는 추가적인 데이터(필터링 등)를 제공하여, 클라이언트가 원하는 정보를 더욱 세부적으로 요청할 수 있도록 합니다.

이러한 기능들은 Nest.js 애플리케이션에서 효과적으로 API 엔드포인트 및 비즈니스 로직 구현에 큰 도움을 주며, 개발자가 보다 효율적으로 작업할 수 있는 환경을 제공합니다.

728x90