Mutation
GraphQLのほとんどの議論はデータの取得に焦点を当てていますが、完全なデータプラットフォームには、サーバー側のデータを変更する方法も必要です。RESTでは、どのようなリクエストもサーバー上で副作用を引き起こす可能性がありますが、ベス トプラクティスではGETリクエストでデータを変更すべきではないとしています。GraphQLも同様で、技術的にはどのようなクエリでもデータの書き込みを引き起こすように実装することが可能です。しかし、RESTと同様に、書き込みを引き起こす操作は変異を通じて明示的に送信されるべきであるという慣習を守ることが推奨されます(詳しくはこちらをご覧ください)。
Apolloの公式ドキュメントでは、
upvotePost()
変異の例を使用しています。この変異は、投稿の投票数プロパティの値を増加させるメソッドを実装しています。Nestで同等の変異を行うには、@Mutation()
デコレータを使用します。