@Query
데코레이터는 NestJS에서 GraphQL 쿼리를 처리하는 메서드에 적용되는 데코레이터 중 하나입니다. GraphQL 스키마의 쿼리 타입에 해당하는 리졸버 메서드에 @Query
데코레이터를 사용하여 해당 메서드를 스키마에 등록하고, 해당 쿼리의 처리를 정의할 수 있습니다.
다음은 @Query
데코레이터의 주요 특징과 사용법에 대한 상세한 설명입니다:
사용법: @Query
데코레이터는 메서드 위에 붙여서 사용합니다. 해당 메서드는 GraphQL 쿼리에서 호출할 수 있는 엔드포인트가 됩니다.
타입 반환: @Query
데코레이터를 사용하는 메서드는 필요한 경우 어떤 타입의 데이터를 반환하는지 지정해야 합니다. 이는 GraphQL 스키마의 타입과 일치해야 합니다. 메서드 반환 타입 앞에 TypeScript의 타입 어노테이션을 사용하여 지정합니다.
메서드 파라미터: @Query
데코레이터를 사용하는 메서드는 GraphQL 쿼리에서 전달되는 인자들을 받을 수 있습니다. 이러한 인자들은 메서드의 파라미터로 선언됩니다.
설명 (Description): @Query
데코레이터에는 해당 쿼리의 설명을 제공하는 description
옵션을 제공할 수 있습니다. 이 설명은 GraphQL 스키마에서 해당 쿼리의 설명으로 표시됩니다.
옵션: @Query
데코레이터에는 여러 옵션을 제공할 수 있습니다. 이를 통해 캐싱, 접근 제어 등을 설정할 수 있습니다.
아래는 @Query
데코레이터의 기본적인 사용 예제입니다:
import { Query, Resolver, Args } from '@nestjs/graphql';
@Resolver()
export class MyResolver {
@Query(() => String, {
name: 'hello', // 쿼리 이름을 'hello'로 설정합니다.
description: 'A simple greeting message.', // 쿼리에 대한 설명을 제공합니다.
})
getHello(): string {
return 'Hello, World!';
}
@Query(() => Int)
multiply(@Args('a') a: number, @Args('b') b: number): number {
return a * b;
}
}
위 예제에서 getHello
메서드는 'hello'라는 이름의 쿼리를 정의하고, 해당 쿼리가 호출되면 'Hello, World!' 문자열을 반환합니다. multiply
메서드는 두 개의 인자를 받아서 곱셈 연산을 수행하여 결과를 반환하는 쿼리를 정의합니다.
요약하면, @Query
데코레이터는 GraphQL 스키마에서 쿼리 타입에 해당하는 리졸버 메서드를 정의하는 데 사용되며, 해당 메서드의 이름, 반환 타입, 설명 등을 설정할 수 있습니다. 이를 통해 GraphQL API의 쿼리 엔드포인트를 구현할 수 있습니다.