GraphQL의 요청 단위 종류 : query, mutation, subscription
우리가 HTTP 요청을 할 때 GET, POST, DELETE, PATCH 등의 메서드가 제공되는 것처럼 GraphQL 또한 query, mutation, subscription 이라 불리는 세가지 요청 방식을 제공한다.
GraphQL의 query
query은 읽기 전용으로 데이터를 가져오기 위한 메서드이다. query를 사용하는 경우는 데이터가 변화될 필요 없이 단순한 조회가 필요할 때이다. 예를 들어 View를 그리기 위한 정보 혹은 유저 정보를 가져오기 위한 경우에 사용한다.
GraphQL의 mutation
mutation은 데이터를 변경한 후 가져오기 위한 메서드이다. 요청으로 데이터를 변화시켜야 하는 경우에 사용한다. 예를들어 회원 가입을 통해 유저가 등록되어야 한다거나, 주문이 접수되어 유저의 주문 정보가 업데이트 되었을 경우 사용된다.
GraphQL의 subscription
마지막으로 subscription은 실시간으로 변경된 데이터를 가져오기 위한 요청 방식이다. GraphQL의 subscription은 웹소켓을 통해 소켓 통신을 열어두고 데이터 업데이트 시 알리는 방식으로 이루어진다. 만약 내부의 구현이 궁금하다면 아래 정보를 참고하기를 바란다.
subscription은 리액티브 프로그래밍의 데이터 발행자와 매우 비슷한 역할을 하며, 데이터가 자주 업데이트 되어야 하는 View(예를 들어 Chatting 을 위한 View)라면 매번 상태가 업데이트 될 때마다 HTTP 요청을 보내는 것은 자원의 낭비가 심하므로 소켓통신으로 처리하는 것이 좋다. 이런 경우 사용되는 것이 바로 subscription이다.
정리
이번 글에서는 GraphQL의 메서드에 대해 간략하게 알아보았다. 데이터 읽기는 query, 데이터를 변화 시킨 후 응답은 mutation, 데이터 구독은 subscription 에서 GraphQL은 HTTP 통신과 다르게 메서드들이 클라이언트를 위해 매우 직관적으로 만들어졌음을 알 수 있다. 다음 글부터는 이들 각각이 어떻게 사용되고 구현되는지에 대해 더욱 자세히 알아볼 것이다.