작성일 댓글 남기기

GraphQL의 쿼리(Query)와 뮤테이션(Mutation)

1. 쿼리(Query) 작성하기

쿼리란 무엇인가?

GraphQL에서 쿼리는 서버로부터 데이터를 요청하는 작업을 의미합니다. 예를 들어, REST API에서 데이터를 가져오는 GET 요청과 비슷한 개념이에요. GraphQL 쿼리의 가장 큰 장점은 필요한 데이터만 정확하게 요청할 수 있다는 것입니다.

기본 쿼리 예제

사용자 정보를 요청하는 쿼리를 예시로 들어볼게요. 이 예시는 사용자의 nameemail 정보를 가져오는 쿼리입니다.

query {
user(id: 1) {
name
email
}
}

이 쿼리는 서버에 id가 1인 사용자의 nameemail을 요청하는 것입니다. 서버는 요청한 정보만 정확하게 반환합니다.

중첩 쿼리(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는 변수로 사용됩니다. 실제 요청을 보낼 때는 이 변수를 지정해서 데이터를 요청할 수 있어요. 예를 들어, userId2를 넣으면, 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): 서버에서 데이터를 변경하는 작업입니다. 데이터를 추가, 수정, 삭제하는 요청을 보낼 때 사용됩니다.
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다