클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적입니다.
쿼리 예시
{
hero {
name
friends {
name
}
}
}
gql은 단 하나의 엔드포인트가 존재하고 post 메소드를 사용합니다.
gql에서는 굳이 쿼리와 뮤테이션을 나누는데 내부적으로 들어가면 사실상 이 둘은 별 차이가 없습니다. 쿼리는 데이터를 읽는데 사용하고, 뮤테이션은 말 그대로 데이터를 변조하는데 사용한다는 개념적인 규약을 정해 놓은 것 뿐입니다.
{
human(id: "1000") {
name
height
}
}
query HeroNameAndFriends($episode: Episode) {
hero(episode: $episode) {
name
friends {
name
}
}
}
처음에는 일반 쿼리와 오퍼레이션 쿼리의 구분이 헷갈립니다. 하나는 query가 붙어있고 다른 하나는 중괄호로 바로 시작합니다.
이를 이해하기 위해서는 오퍼레이션 네임과 변수의 쓰임새를 살펴보는 것이 도움이 됩니다. 일반적인 클라이언트에서 보통 static한 쿼리를 작성하는 경우는 일부일 것입니다. 대부분 파라미터를 가지고 쿼리를 요청하겠죠?
이때에 gql에는 변수를 넣을 수 있습니다. 이 변수를 받기위해 오퍼레이션 네임 쿼리를 사용하게 됩니다.
query foo($a: Int = 123) {
GetRide(
rideId: $a
) {
ok
}
}
foo
라는 이름의 쿼리 오퍼레이션을 만들고 변수를 받습니다. 이 변수는 Int
형이고 기본 값은 123
입니다.