[nodejs] NestJS를 사용한 GraphQL 서버 구축
NestJS는 TypeScript로 구현된 프레임워크로, 손쉽게 확장 가능하고 강력한 애플리케이션을 구축할 수 있는 기능들을 제공합니다. 이 포스트에서는 NestJS를 사용하여 GraphQL 서버를 구축하는 방법에 대해 알아보겠습니다.
목차
- GraphQL 소개
- NestJS와 GraphQL 설정
- GraphQL 리졸버 작성
- 데이터 모델 정의
- GraphQL 스키마 작성
- 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 공식 문서를 참고하여 작성되었습니다.