[GraphQL] Mutation

본 포스트는 공식 레퍼런스를 참고해 GraphQL을 공부하며 직접 작성한 가이드 입니다.
본 포스트는 2021년 7월 최신 버전인 v16.2를 기준으로 작성되어 있습니다.

Mutation

GraphQL은 요청을 두가지 타입인 QueryMutation으로 나눈다. 이번에는 CUD에 해당하는 Mutation에 대해 알아보자. 데이터를 수정하는 행위를 의미하는 Mutation을 통해 요청을 보내야한다. 간단하게 Mutation으로 웹툰을 만들어보자. 먼저 Mutation의 스키마를 만들고 input type에 해당하는 스키마를 정의해준다.

1
2
3
4
# 웹툰 등록
type Mutation {
createWebToon(input: WebToonInput!): WebToon!
}
1
2
3
4
input WebToonInput {
title: String!
webToonType: WebToonType!
}

그리고 이와 같이 요청을 받을 GraphQLMutationResolverWebToonInput을 정의해주자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Slf4j
@Component
public class WebToonInputMutation implements GraphQLMutationResolver {
public WebToon createWebToon(WebToonInput input) {
log.info("create Webtoon title : {}", input.getTitle());

return WebToon.builder().id(UUID.randomUUID()).title(input.getTitle()).webToonType(input.getWebToonType()).build();
}
}

@Getter
public class WebToonInput {
private String title;
private WebToonType webToonType;
}

그리고 요청을 보내보자. 앞서 살펴보았던 playground tab에 등록해서 진행한다.

1
2
3
4
5
6
7
8
# 웹툰 등록하기
mutation CREATE_WEBTOON($webToonInput: WebToonInput!) {
createWebToon(input: $webToonInput) {
id
title
webToonType
}
}
1
2
3
4
5
6
7
8
9
{
"data": {
"createWebToon": {
"id": "169e225d-c40d-42c3-904d-332e28429f70",
"title": "스퍼맨",
"webToonType": "Originals"
}
}
}

의도한 대로 잘 동작하는것을 확인할 수 있다.

Repository

모든 가이드의 예제 코드는 SongHayoung/springboot-graphql-tutorial에서 확인할 수 있습니다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2021/07/25/GraphQL/graphql-8/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.