[typescript] GraphQL-js에서의 타입 기반 데이터 유효성 검사

GraphQL은 훌륭한 쿼리 언어이지만, 서버와 클라이언트 양쪽에서 유효성이 검사되어야 합니다. 클라이언트에서 이를 수행하려면 서버에서 정의한 GraphQL 스키마와 일치하는 데이터를 생성해야 합니다. TypeScript를 사용하면 이를 쉽게 달성할 수 있습니다.

TypeScript와 GraphQL

TypeScript는 GraphQL에서 강력한 도구입니다. 타입 기반의 데이터 유효성을 검사하고, GraphQL 쿼리 및 뮤테이션의 반환 형식을 정의할 수 있습니다.

import { gql } from 'graphql-tag';

type User = {
  id: string;
  name: string;
  age: number;
}

const GET_USER_QUERY = gql`
  query GetUser($userId: ID!) {
    user(id: $userId) {
      id
      name
      age
    }
  }
`;

위의 예제에서, TypeScript의 타입 정의를 활용하여 GET_USER_QUERY의 반환 형식을 정의하였습니다.

GraphQL 스키마와 TypeScript 유효성 검사

GraphQL-js 서버에서 TypeScript를 사용하여 스키마와 일치하는 데이터를 생성하는 방법은 다음과 같습니다.

1. GraphQL 스키마 정의하기

import { GraphQLObjectType, GraphQLID, GraphQLString, GraphQLInt, GraphQLSchema, GraphQLNonNull } from 'graphql';

const UserType = new GraphQLObjectType({
  name: 'User',
  fields: {
    id: { type: GraphQLNonNull(GraphQLID) },
    name: { type: GraphQLNonNull(GraphQLString) },
    age: { type: GraphQLNonNull(GraphQLInt) }
  }
});

const schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: 'Query',
    fields: {
      user: {
        type: UserType,
        args: { id: { type: GraphQLNonNull(GraphQLID) } },
        resolve(parent, args) {
          // 사용자 데이터 반환
        }
      }
    }
  })
});

2. TypeScript로 데이터 생성하기

const userData = {
  id: '1',
  name: 'John Doe',
  age: 25
};

// UserType과 데이터 일치 여부 확인
const isUserDataValid: boolean = validateUserData(userData);

위의 예제에서 validateUserData 함수는 데이터가 UserType과 일치하는 지 확인합니다.

결론

TypeScript를 사용하여 GraphQL-js에서의 타입 기반 데이터 유효성 검사를 수행하면 클라이언트 및 서버 모두에서 데이터의 일관성을 유지하고 에러를 방지할 수 있습니다.

참고 자료