[typescript] TypeScript로 GraphQL 서버 개발하기

이번 포스트에서는 TypeScript와 GraphQL을 사용하여 간단한 서버를 개발하는 방법에 대해 다룰 것입니다. TypeScript를 사용하면 정적 타입 검사와 GraphQL을 사용하면 API를 쉽게 정의하고 사용할 수 있습니다.

1. 프로젝트 설정

먼저, 프로젝트를 위한 디렉토리를 만들고 다음 명령어를 사용하여 TypeScript 및 GraphQL 관련 패키지를 설치합니다.

npm init -y
npm install express apollo-server-express graphql type-graphql
npm install --save-dev typescript @types/node ts-node nodemon

그리고 tsconfig.json 파일을 생성하여 TypeScript 설정을 추가합니다.

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "./dist",
    "strict": true
  }
}

2. GraphQL 스키마 정의

GraphQL 스키마를 정의하고 Resolver를 작성합니다. ./src/schema.ts 파일을 생성하여 다음 코드를 추가합니다.

// ./src/schema.ts

import { buildSchema } from 'type-graphql';

@ObjectType()
class User {
  @Field()
  id: string;

  @Field()
  name: string;
}

@Resolver()
class UserResolver {
  @Query(() => User)
  getUser(): User {
    return { id: '1', name: 'John Doe' };
  }
}

export const schema = await buildSchema({
  resolvers: [UserResolver],
});

3. 서버 생성

이제 Express 앱과 Apollo Server를 생성하고 GraphQL 스키마를 등록합니다. ./src/index.ts 파일을 만들고 다음 코드를 추가합니다.

// ./src/index.ts

import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import { schema } from './schema';

async function bootstrap() {
  const server = new ApolloServer({
    schema,
  });

  const app = express();
  server.applyMiddleware({ app });

  app.listen({ port: 4000 }, () => {
    console.log(`Server ready at http://localhost:4000${server.graphqlPath}`);
  });
}

bootstrap();

4. 서버 실행

마지막으로, 다음 명령어를 사용하여 TypeScript 파일을 실행합니다.

npx ts-node src/index.ts

결론

이제 TypeScript와 GraphQL을 사용하여 간단한 서버를 만들어보았습니다. TypeScript는 정적 타입 검사를 통해 안정적이고 확장 가능한 코드를 작성할 수 있게 해주고, GraphQL은 강력한 API를 쉽게 정의하고 사용할 수 있도록 해줍니다.

참고 자료: