[개발일지] 230613 GraphQL Mutation

GraphQL은 데이터를 읽어오는데 사용되는 "query", 데이터를 변경하는데 사용되는 "mutation", 실시간으로 변경사항을 감지하는 "subscription" 이렇게 세 가지 유형의 쿼리가 존재한다. 

 

오늘은 그 중 데이터를 변경할때 사용하는 mutation에 대해 알아봤다.

 

Mutation

REST에서 데이터 수정을 위해 GET요청을 사용하지 않는것 처럼 GraphQL도 데이터 변경을 발생시키는 작업은 명시적으로 mutation을 통해 전송되어야 한다는 규칙을 정하는 것이 좋다.

 

mutation의 스키마 정의하는것은 "query"와 다를게 없다. 아래 예제 코드를 보면 스키마 형태가 query에서 mutation으로 변경된것 뿐이다.

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

 

쿼리를 mutation으로 정의해주고 이 예제 코드에서는 인자로 변수($ep, $review)들을 받는데 변수는 아래와 같은 형태(일반적으로 JSON)로 전달해준다.

 

Variables

{
  "ep": "JEDI",
  "review": {
    "stars": 5,
    "commentary": "This is a great movie!"
  }
}

 

Response

{
  "data": {
    "createReview": {
      "stars": 5,
      "commentary": "This is a great movie!"
    }
  }
}

 

쿼리 결과는새로 생성된 starts와 commentary 필드를 갖고있는 createReview를 반환한다.

 

mutation에 대한 자세한 정보는 아래 공식문서에서 확인할 수 있다.

 

https://graphql-kr.github.io/learn/queries/

 

GraphQL: API를 위한 쿼리 언어

GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고

graphql-kr.github.io