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/
'성장이야기 > TIL' 카테고리의 다른 글
[개발일지] 230616 Quarkus Redis WRONGTYPE Operation against a key holding the wrong kind of value (0) | 2023.06.17 |
---|---|
[개발일지] 230614 Amplify GraphQL (0) | 2023.06.14 |
[개발일지] 230609 GraphQL을 알아보자 (GraphQL과 REST API) (0) | 2023.06.09 |
[개발일지] 230608 실시간 급상승 검색어 알고리즘 (1) | 2023.06.08 |
[개발일지] 230607 Ranking Algorithm(순위 알고리즘) (0) | 2023.06.07 |