[typescript] Nest.js에서 타입스크립트로 쿼리 매개변수 처리

Nest.js는 TypeScript를 사용하여 서버 사이드 애플리케이션을 빌드할 수 있는 프레임워크입니다. 이번 글에서는 Nest.js 애플리케이션에서 쿼리 매개변수(query parameters)를 TypeScript로 어떻게 처리하는지에 대해 살펴보겠습니다.

쿼리 매개변수란?

쿼리 매개변수는 URL에 포함된 데이터를 나타냅니다. 보통 ? 다음에 key=value 형태로 나타내며, 여러 개의 쿼리 매개변수를 사용할 때는 &로 구분합니다. 예를 들면, ?page=1&limit=10 과 같이 표현됩니다.

Nest.js에서 쿼리 매개변수 처리

Nest.js에서 쿼리 매개변수를 처리하려면 먼저 @nestjs/common 패키지에서 제공하는 Query() 데코레이터를 사용해야 합니다. 이 데코레이터를 사용하면 쿼리 매개변수를 간편하게 추출할 수 있습니다. 아래는 쿼리 매개변수를 처리하는 예시입니다.

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

@Controller('items')
export class ItemsController {
  @Get()
  findAll(@Query('page') page: number, @Query('limit') limit: number) {
    return `This action returns items with page ${page} and limit ${limit}`;
  }
}

위의 예시에서는 @Query() 데코레이터를 통해 pagelimit 쿼리 매개변수를 추출하여 사용하고 있습니다.

타입스크립트로 쿼리 매개변수 유효성 검사

Nest.js에서는 TypeScript의 타입 시스템을 사용하여 쿼리 매개변수의 유효성을 검사할 수 있습니다. 이를 통해 잘못된 입력이 들어왔을 때 런타임 에러를 방지할 수 있습니다. 아래는 쿼리 매개변수에 대한 유효성을 검사하는 예시입니다.

import { IsInt, IsPositive } from 'class-validator';

export class PaginationDto {
  @IsInt()
  @IsPositive()
  page: number;

  @IsInt()
  @IsPositive()
  limit: number;
}

위의 예시에서 class-validator를 사용하여 PaginationDto 클래스를 정의하고 있습니다. 이를 통해 쿼리 매개변수에 대한 타입을 지정하고 유효성을 검사할 수 있습니다.

Nest.js 애플리케이션에서 쿼리 매개변수를 TypeScript로 처리하는 방법에 대해 간략히 살펴보았습니다. 이를 통해 런타임 에러를 방지하고 타입 안정성을 확보할 수 있습니다. Nest.js와 TypeScript를 함께 사용하여 안전하고 견고한 애플리케이션을 구축하는 데 도움이 될 것입니다.

참고 자료