1. 쿼리(Query) 작성하기
쿼리란 무엇인가?
GraphQL에서 쿼리는 서버로부터 데이터를 요청하는 작업을 의미합니다. 예를 들어, REST API에서 데이터를 가져오는 GET 요청과 비슷한 개념이에요. GraphQL 쿼리의 가장 큰 장점은 필요한 데이터만 정확하게 요청할 수 있다는 것입니다.
기본 쿼리 예제
사용자 정보를 요청하는 쿼리를 예시로 들어볼게요. 이 예시는 사용자의 name
과 email
정보를 가져오는 쿼리입니다.
query {
user(id: 1) {
name
email
}
}
이 쿼리는 서버에 id
가 1인 사용자의 name
과 email
을 요청하는 것입니다. 서버는 요청한 정보만 정확하게 반환합니다.
중첩 쿼리(Nested Query)
GraphQL에서는 데이터를 중첩해서 요청할 수도 있습니다. 예를 들어, 사용자의 정보와 그 사용자가 쓴 게시물의 정보를 한 번에 요청할 수 있어요.
query {
user(id: 1) {
name
posts {
title
content
}
}
}
이 쿼리는 id
가 1인 사용자의 이름(name
)과 그 사용자가 쓴 게시물들의 제목(title
)과 내용(content
)을 한 번에 요청하는 예시입니다.
매개변수(Parameter) 사용하기
GraphQL 쿼리에서는 매개변수를 사용해 요청을 동적으로 만들 수 있습니다. 예를 들어, 특정 사용자를 요청할 때마다 다른 id
를 사용할 수 있어요.
query getUser($userId: ID!) {
user(id: $userId) {
name
email
}
}
여기서 $userId
는 변수로 사용됩니다. 실제 요청을 보낼 때는 이 변수를 지정해서 데이터를 요청할 수 있어요. 예를 들어, userId
에 2
를 넣으면, id
가 2인 사용자의 정보를 받아올 수 있습니다.
2. 뮤테이션(Mutation) 작성하기
뮤테이션이란?
뮤테이션은 데이터를 서버에 추가하거나 수정, 삭제할 때 사용하는 작업입니다. REST API의 POST, PUT, DELETE와 같은 기능을 수행한다고 보시면 됩니다.
기본 뮤테이션 예제
새로운 사용자를 추가하는 뮤테이션 예제를 살펴볼게요.
mutation {
addUser(name: "Alice", email: "[email protected]") {
id
name
email
}
}
이 뮤테이션은 새로운 사용자를 추가하고, 추가된 사용자의 id
, name
, email
을 반환합니다. REST API의 POST 요청과 비슷한 기능을 합니다.
데이터 수정하기
이번에는 사용자의 정보를 수정하는 뮤테이션 예제입니다.
mutation {
updateUser(id: 1, name: "Bob", email: "[email protected]") {
id
name
email
}
}
이 예시는 id
가 1인 사용자의 이름과 이메일을 변경하는 작업입니다. 서버는 수정된 사용자 정보를 반환합니다.
데이터 삭제하기
마지막으로 데이터를 삭제하는 뮤테이션을 보겠습니다.
mutation {
deleteUser(id: 1) {
id
}
}
이 뮤테이션은 id
가 1인 사용자를 삭제하고, 삭제된 사용자의 id
를 반환합니다.
3. 쿼리와 뮤테이션의 차이점 정리
- 쿼리(Query): 서버에서 데이터를 가져오는 작업입니다. 클라이언트가 필요한 데이터를 정확하게 요청할 수 있습니다.
- 뮤테이션(Mutation): 서버에서 데이터를 변경하는 작업입니다. 데이터를 추가, 수정, 삭제하는 요청을 보낼 때 사용됩니다.