[nodejs] GraphQL 스키마 정의

GraphQL은 API를 정의하기 위한 강력한 쿼리 언어이자 런타임입니다. 이 문서에서는 Node.js와 함께 GraphQL 스키마를 정의하는 방법을 살펴보겠습니다.

스키마 정의하기

GraphQL 스키마는 API에서 제공되는 타입과 해당 타입 간의 관계를 정의합니다. 이를 통해 클라이언트는 서버에 요청할 수 있는 올바른 쿼리 및 뮤테이션을 알 수 있습니다.

GraphQL 스키마는 타입 정의루트 쿼리 및 뮤테이션 정의로 구성됩니다.

타입 정의

타입은 API에서 지원하는 데이터 구조를 정의합니다. 예를 들어, 사용자, 포스트, 댓글과 같은 타입을 정의할 수 있습니다. 각 타입은 핵심 필드와 서브 타입으로 구성될 수 있습니다.

예시 사용자 타입 정의:

const { gql } = require('apollo-server');
const typeDefs = gql`
  type User {
    id: ID!
    name: String!
    email: String!
    posts: [Post!]!
  }
`;

루트 쿼리 및 뮤테이션 정의

루트 쿼리와 뮤테이션은 클라이언트가 요청할 수 있는 진입점을 정의합니다. 루트 쿼리는 데이터를 읽을 때 사용되고, 뮤테이션은 데이터를 변경할 때 사용됩니다.

예시 루트 쿼리 및 뮤테이션 정의:

const { gql } = require('apollo-server');
const typeDefs = gql`
  type Query {
    users: [User!]!
    user(id: ID!): User
  }

  type Mutation {
    createUser(name: String!, email: String!): User!
    updateUser(id: ID!, name: String, email: String): User!
  }
`;

결론

GraphQL 스키마를 정의함으로써 API의 요청과 응답 형식을 명확히 정의할 수 있습니다. Node.js와 함께 GraphQL을 사용하면 강력하고 유연한 API를 만들 수 있습니다.

이상으로 GraphQL 스키마 정의에 대한 내용을 마치도록 하겠습니다.

이 문서는 Apollo Server 및 GraphQL Tools를 기반으로 작성되었습니다.

GraphQL Official Documentation