이 글은 GraphQL Docs를 읽고 정리한 것입니다.
쿼리
{
book {
title
}
}
실행 결과
{
"data": {
"book": [
{
"title": "Harry Potter"
},
{
"title": "The Lord of the Rings"
}
]
}
}
쿼리
{
book(id: 100) {
title
author(name: family)
}
}
실행 결과
{
"data": {
"book": {
"title": "Harry Potter",
"author": "Rowling"
}
}
}
쿼리
{
earlyPotter: book(date: early){
title
}
latePotter: book(date: late){
title
}
}
실행 결과
{
"data": {
"earlyPotter": {
"title": "Harry Potter and the Sorcerer's Stone"
},
"latePotter": {
"title": "Harry Potter and the Deathly Hallows"
}
}
}
프래그먼트 예시 쿼리는 기존보다 복잡해서 독스의 예시를 그대로 가져왔다.
쿼리
{
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
appearsIn
friends {
name
}
}
실행 결과
{
"data": {
"leftComparison": {
"name": "Luke Skywalker",
"appearsIn": [
"NEWHOPE",
"EMPIRE",
"JEDI"
],
"friends": [
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
},
{
"name": "C-3PO"
},
{
"name": "R2-D2"
}
]
},
"rightComparison": {
"name": "R2-D2",
"appearsIn": [
"NEWHOPE",
"EMPIRE",
"JEDI"
],
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
}
]
}
}
}
query
, mutation
, subscription
중 하나를 선택할 수 있다.쿼리
query HeroNameAndFriends {
hero {
name
friends {
name
}
}
}
실행 결과
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
}
]
}
}
}
$variableName
을 쿼리에서 받는 변수로 선언해 variableName: value
로 전달하면 된다.($episode: Episode = "JEDI")
로 기본값을 명시하면 된다.아래 예시에서 Episode
는 타입을 의미한다.
쿼리
query HeroNameAndFriends($episode: Episode) {
hero(episode: $episode) {
name
friends {
name
}
}
}
// variables
{
"episode": "JEDI"
}
실행 결과
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
}
]
}
}
}
@include(if: $variableName)
: 인자가 true 인 경우에만 이 필드를 결과에 포함한다.@skip(if: $variableName)
인자가 true 이면 이 필드를 건너뛴다.여기서 $variableName
은 type이 Boolean이어야 한다. 아래 예시에서 확인할 수 있다.
!
은 필수로 포함되어야 할 때 사용한다.
쿼리
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}
// variables
{
"episode": "JEDI",
"withFriends": false
}
실행 결과
{
"data": {
"hero": {
"name": "R2-D2"
}
}
}