[nodejs] GraphQL 쿼리 언어 스키마 정의

GraphQL은 API를 위한 쿼리 언어와 런타임 환경을 제공하는 오픈 소스 데이터 질의 언어입니다. GraphQL은 데이터 모델을 스키마로 정의함으로써 타입 시스템을 제공합니다. 스키마는 GraphQL API에서 사용 가능한 타입 및 쿼리, 뮤테이션 및 서브스크립션의 종류 및 규칙을 정의합니다.

GraphQL 스키마의 주요 구성 요소

GraphQL 스키마는 다음과 같은 주요 구성 요소로 구성됩니다.

1. 타입 정의

GraphQL 스키마는 객체 타입(Object Types)을 정의하여 API에서 사용할 데이터 구조를 나타냅니다. 또한, 스칼라 타입(Scalar Types)으로 데이터의 유형을 정의할 수 있습니다.

2. 필드 정의

각 타입은 필드(Fields)를 포함하며, 각 필드는 해당 타입의 데이터를 나타냅니다. 필드의 데이터 유형을 정의하고 해당 필드에 대한 쿼리 및 뮤테이션을 지정할 수 있습니다.

3. 쿼리 및 뮤테이션 정의

GraphQL 스키마는 클라이언트가 요청할 수 있는 쿼리(Query) 및 변경할 수 있는 뮤테이션(Mutation)을 정의합니다. 이를 통해 클라이언트는 원하는 데이터를 정확하게 가져올 수 있고, 데이터의 변경이 가능합니다.

4. 서브스크립션 정의

GraphQL은 서브스크립션을 통해 실시간 데이터를 제공할 수 있는 능력을 제공합니다. 스키마는 이러한 실시간 데이터 요청을 위한 서브스크립션을 정의할 수 있습니다.

예시 코드

아래는 Node.js에서 GraphQL 스키마를 정의하는 간단한 예시 코드입니다.

const { buildSchema } = require('graphql');

// 스키마 정의
const schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// 루트 리졸버 정의
const root = {
  hello: () => 'Hello, World!'
};

위의 코드에서는 hello라는 단순한 문자열을 반환하는 쿼리를 정의하고 있습니다.

GraphQL의 강력한 스키마 정의를 통해 데이터를 구조화하고 클라이언트에게 정확한 데이터를 제공할 수 있게 됩니다.

참고 자료


위 포스트에서는 GraphQL의 스키마를 정의하는 방법과 주요 구성 요소를 살펴보았습니다. 스키마를 통해 API의 데이터 모델을 명확하게 정의함으로써 개발자와 클라이언트 간의 원할한 소통을 도모할 수 있습니다.