본문 바로가기
쿤즈 Dev/GraphQL

[GraphQL] 스키마(Schema) 정의 방법 (1): SDL과 Scalar types

by :)Koon 2021. 5. 18.

지난 포스팅에서는 GraphQL의 간략한 개념과 사용을 위해 Apollo Server를 설치하고 웹을 이용해서 간단히 테스트를 진행해 보았습니다.

2021.05.15 - [쿤즈 Dev/GraphQL] - [GraphQL] Apollo Server를 이용한 GraphQL 사용 방법

Node.js를 기반으로 만드는 프로그래밍이기 때문에 Javascript를 조금이라도 다룰 줄 안다면 더 쉽게 사용이 가능합니다.

이번 포스팅에서는 기본적인 스키마(Schema)를 정의하는 방법을 알아보도록 하겠습니다.


스키마 정의 언어 (SDL : Schema Definition Language)

GraphQL에서 스키마를 정의하는 방법을 SDL이라 합니다. 이런 스키마 정의 언어는 사람이 읽을 수 있는 형태로 만들어진 하나의 구조입니다.

 

앞선 포스팅에서 간단하게 스키마를 정의 했었던 부분을 다시 보도록 하겠습니다.

type Book {
  title: String
  author: Author
}

type Author {
  name: String
  books: [Book]
}

위 스키마 정보는 Book과 Author 두 가지 타입입니다. 

먼저 Book 타입의 요소는 title과 author입니다. title은 String의 형태이고 author는 Author 형태입니다.

Author 타입의 요소는 name과 books입니다. name은 String의 형태이고 books는 배열의 형태이며 내부에는 Book의 요소들이 저장되는 형태입니다.

 

위와 같이 스키마 정보를 직관적으로 파악이 가능하고 어떠한 데이터를 넣어야 하는지 알 수 있는 것이 GraphQL의 SDL 형태입니다.


GraphQL 지원되는 타입의 종류

GraphQL에서 스키마 정의에 사용되는 모든 타입들은 아래와 같은 종류가 있습니다.

  • Scalar types
  • Object types
  • The Query type
  • The Mutation type
  • Input types
  • Enum types

이 중에서 이번 포스팅에서는 Scalar types에 대해서 알아보도록 하겠습니다.


Scalar types

Scalar types은 대부분의 프로그램에서 보던 데이터 저장 형태와 비슷합니다.

  • Int: 부호가 있는 32bit 정수
  • Float: 부호가 있는 부동소수를 나타내는 실수
  • String: UTF-8 문자열
  • Boolean: true 또는 false
  • ID: 데이터를 가져올 때 사용되는 key와 같이 식별할 수 있는 고유 식별자

Scalar은 GraphQL의 스키마를 따로 정의하는 요소는 아니지만 반드시 사용하는 요소입니다. 이와 함께 대부분은 Object types을 이용합니다.


Scalar types의 사용 예

Scalar types은 단독적으로 사용하기보다는 Object types과 함께 사용됩니다. 프로그래머가 정의하는 Object types의 내부 데이터들은 모두 Scalar types의 형태로 정의하기 때문입니다.

 

위에서 정의한 Book 타입에 Scalar 타입들을 추가해서 보도록 하겠습니다.

type Book {
  id: ID
  title: String
  author: String
  number: Int
  published: Boolean
}

이렇게 Scalar 타입들이 내부에 들어갈 수 있습니다. 이 정의를 보고 어떤 내용들이 들어있는지 바로 확인 가능합니다. 이유는 SDL로 만들어진 이 정의들은 모두 사람의 눈으로 구별이 가능하기 때문입니다.


이번 포스팅에서는 GraphQL에서 사용하는 여러가지 타입 중 Scalar types에 대해서 알아보았습니다. 정의를 하는 방법을 알아야 사용할 수 있기 때문에 여러 가지 타입을 한꺼번에 포스팅하기보다는 하나씩 나눠서 보려 합니다. 도움이 되셨으면 합니다. 이상입니다.

댓글