[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를 쉽게 정의하고 사용할 수 있도록 해줍니다.
참고 자료: