GraphQL-유형 시스템

GraphQL은 강력한 형식의 언어입니다. 유형 시스템은 GraphQL 애플리케이션에서 사용할 수있는 다양한 데이터 유형을 정의합니다. 유형 시스템은 클라이언트와 서버 간의 계약 인 스키마를 정의하는 데 도움이됩니다. 일반적으로 사용되는 GraphQL 데이터 유형은 다음과 같습니다.

Sr. 아니. 유형 및 설명
1

Scalar

단일 값 저장

2

Object

가져올 수있는 개체의 종류를 표시합니다.

Query

다른 특정 유형에 대한 진입 점 유형

4

Mutation

데이터 조작을위한 진입 점

5

Enum

사용자가 규정 된 옵션 목록에서 선택해야하는 상황에서 유용합니다.

스칼라 유형

스칼라 유형은 단일 값만 저장할 수있는 기본 데이터 유형입니다. GraphQL이 제공하는 기본 스칼라 유형은 다음과 같습니다.

  • Int − 부호있는 32 비트 정수

  • Float − 부호있는 배정 밀도 부동 소수점 값

  • String − UTF-8 자 시퀀스

  • Boolean − 참 또는 거짓

  • ID − 개체를 가져 오기위한 고유 식별자 또는 캐시의 키로 자주 사용되는 고유 식별자.

스칼라 유형을 정의하는 구문은 다음과 같습니다.

field: data_type

아래에 주어진 스 니펫은 문자열 값을 반환하는 greeting이라는 필드를 정의합니다.

greeting: String

개체 유형

개체 유형은 스키마에서 사용되는 가장 일반적인 유형이며 필드 그룹을 나타냅니다. 개체 유형 내의 각 필드는 다른 유형에 매핑되므로 중첩 된 유형이 허용됩니다. 즉, 객체 유형은 여러 스칼라 유형 또는 객체 유형으로 구성됩니다.

객체 유형을 정의하는 구문은 다음과 같습니다.

type object_type_name
{
   field1: data_type
   field2:data_type 
   ....
   fieldn:data_type
}

다음 코드 조각을 고려할 수 있습니다-

--Define an object type--

type Student {
   stud_id:ID
   firstname: String
   age: Int
   score:Float
}

--Defining a GraphQL schema--  

type Query
{
   stud_details:[Student]
}

위에 주어진 예는 객체 데이터 유형 Student를 정의합니다. 루트 쿼리 스키마 의 stud_details 필드는 Student 개체 목록을 반환합니다.

쿼리 유형

GraphQL 쿼리는 데이터를 가져 오는 데 사용됩니다. REST 기반 API에서 리소스를 요청하는 것과 같습니다. 간단하게하기 위해 쿼리 유형은 클라이언트 애플리케이션에서 GraphQL 서버로 전송 된 요청입니다. GraphQL은Schema Definition Language (SDL)쿼리를 정의합니다. 쿼리 유형은 GraphQL의 많은 루트 수준 유형 중 하나입니다.

쿼리를 정의하는 구문은 다음과 같습니다.

type Query {
   field1: data_type
   field2:data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}

쿼리 정의의 예-

type Query  {
   greeting: String
}

돌연변이 유형

돌연변이는 서버로 전송되는 작업입니다. create, update 또는 delete데이터. REST 기반 API를 호출하는 PUT, POST, PATCH 및 DELETE 동사와 유사합니다.

Mutation은 GraphQL의 루트 수준 데이터 유형 중 하나입니다. Query 유형은 데이터 가져 오기 작업의 진입 점을 정의하는 반면 Mutation 유형은 데이터 조작 작업의 진입 점을 지정합니다.

Mutation 유형을 정의하는 구문은 다음과 같습니다.

type Mutation {
   field1: data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type 
}

예를 들어, 다음과 같이 새 Student를 추가하기 위해 변형 유형을 정의 할 수 있습니다.

type Mutation {
   addStudent(firstName: String, lastName: String): Student
}

열거 형

Enum은 스칼라 유형과 유사합니다. 열거 형은 필드 값이 미리 지정된 옵션 목록의 값이어야하는 상황에서 유용합니다.

Enum 유형을 정의하는 구문은 다음과 같습니다.

type enum_name{
   value1
   value2
}

다음 스 니펫은 열거 형 유형을 정의하는 방법을 보여줍니다-

type Days_of_Week{
   SUNDAY
   MONDAY
   TUESDAY
   WEDNESDAY
   THURSDAY
   FRIDAY
   SATURDAY
}

목록 유형

목록은 특정 유형의 값 배열을 나타내는 데 사용할 수 있습니다. 목록은 객체 유형, 스칼라 및 열거 형을 래핑하는 유형 수정 자 []로 정의됩니다.

다음 구문은 목록 유형을 정의하는 데 사용할 수 있습니다-

field:[data_type]

아래 예제는 목록 유형 할일을 정의합니다-

type Query {
   todos: [String]
}

nullable이 아닌 유형

기본적으로 각 코어 스칼라 유형은 널로 설정할 수 있습니다. 즉, 이러한 유형은 지정된 유형의 값을 반환하거나 값이 없을 수 있습니다. 이 기본값을 재정의하고 필드를 정의해야 함을 지정하려면 느낌표 (!)를 형식에 추가 할 수 있습니다. 이렇게하면 쿼리에서 반환 된 결과에 값이 있는지 확인할 수 있습니다.

다음 구문은 nullable이 아닌 필드를 정의하는 데 사용할 수 있습니다-

field:data_type!

아래 예에서 stud_id 는 필수 필드로 선언됩니다.

type Student {
   stud_id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}