[nodejs] NestJS를 사용한 GraphQL 서버 구축

NestJS는 TypeScript로 구현된 프레임워크로, 손쉽게 확장 가능하고 강력한 애플리케이션을 구축할 수 있는 기능들을 제공합니다. 이 포스트에서는 NestJS를 사용하여 GraphQL 서버를 구축하는 방법에 대해 알아보겠습니다.

목차

  1. GraphQL 소개
  2. NestJS와 GraphQL 설정
  3. GraphQL 리졸버 작성
  4. 데이터 모델 정의
  5. GraphQL 스키마 작성
  6. GraphQL 서버 실행

1. GraphQL 소개

GraphQL은 페이스북에서 만든 쿼리 언어로, 클라이언트가 필요한 데이터를 정확히 요청할 수 있도록 도와줍니다. RESTful API와 비교하여 유연하고 효율적으로 데이터를 가져올 수 있는 장점이 있습니다.

2. NestJS와 GraphQL 설정

먼저, NestJS 애플리케이션을 만든 후에 GraphQL 모듈을 설치합니다.

npm install @nestjs/graphql graphql-tools graphql apollo-server-express

그리고 GraphQLModule을 애플리케이션 모듈에 추가하고 설정합니다.

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';

@Module({
  imports: [
    GraphQLModule.forRoot({
      autoSchemaFile: true,
    })
  ],
})
export class AppModule {}

3. GraphQL 리졸버 작성

GraphQL 리졸버는 요청된 쿼리에 대해 어떤 데이터를 반환할지 정의합니다. 예를 들어, user 쿼리가 요청되면 어떻게 사용자 데이터를 반환할지를 정의합니다.

import { Resolver, Query } from '@nestjs/graphql';

@Resolver()
export class UserResolver {
  @Query(() => User)
  async user(): Promise<User> {
    return { id: 1, name: 'John Doe' };
  }
}

4. 데이터 모델 정의

GraphQL에서 사용할 데이터 모델을 정의합니다.

export interface User {
  id: number;
  name: string;
}

5. GraphQL 스키마 작성

GraphQL 스키마는 클라이언트가 요청할 수 있는 데이터의 구조를 정의합니다.

type User {
  id: Int
  name: String
}

type Query {
  user: User
}

6. GraphQL 서버 실행

마지막으로, NestJS 애플리케이션을 실행하고 /graphql 엔드포인트로 접속합니다.

여기까지가 NestJS를 사용하여 GraphQL 서버를 구축하는 과정입니다. NestJS와 GraphQL은 각각의 강력한 기능을 결합하여 뛰어난 애플리케이션을 만들 수 있습니다.

작성자

이 포스트는 NestJS 공식 문서를 참고하여 작성되었습니다.