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
}