@Query GraphQL nestjs

agnusdei·2023년 8월 18일
0

@Query 데코레이터는 NestJS에서 GraphQL 쿼리를 처리하는 메서드에 적용되는 데코레이터 중 하나입니다. GraphQL 스키마의 쿼리 타입에 해당하는 리졸버 메서드에 @Query 데코레이터를 사용하여 해당 메서드를 스키마에 등록하고, 해당 쿼리의 처리를 정의할 수 있습니다.

다음은 @Query 데코레이터의 주요 특징과 사용법에 대한 상세한 설명입니다:

  1. 사용법: @Query 데코레이터는 메서드 위에 붙여서 사용합니다. 해당 메서드는 GraphQL 쿼리에서 호출할 수 있는 엔드포인트가 됩니다.

  2. 타입 반환: @Query 데코레이터를 사용하는 메서드는 필요한 경우 어떤 타입의 데이터를 반환하는지 지정해야 합니다. 이는 GraphQL 스키마의 타입과 일치해야 합니다. 메서드 반환 타입 앞에 TypeScript의 타입 어노테이션을 사용하여 지정합니다.

  3. 메서드 파라미터: @Query 데코레이터를 사용하는 메서드는 GraphQL 쿼리에서 전달되는 인자들을 받을 수 있습니다. 이러한 인자들은 메서드의 파라미터로 선언됩니다.

  4. 설명 (Description): @Query 데코레이터에는 해당 쿼리의 설명을 제공하는 description 옵션을 제공할 수 있습니다. 이 설명은 GraphQL 스키마에서 해당 쿼리의 설명으로 표시됩니다.

  5. 옵션: @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의 쿼리 엔드포인트를 구현할 수 있습니다.

0개의 댓글