GraphQL Query Complexity
#graphql
https://gqlgen.com/reference/complexity/
GraphQL Query Complexity とは
GraphQLクエリの「複雑さ」を数値で表したもの
これは、クエリがサーバーに与える負荷を評価するために使用される
例えば、多くのネストされたフィールドや大量のデータを要求するクエリは高いComplexityを持つ
自己参照しているクエリだとこんなこともできるし
code:graphql
query {
posts(count: 100) {
related(count: 100) {
related(count: 100) {
related(count: 100) {
title
}
}
}
}
}
実はこんなクエリも発行できる
code:gql
query {
_1: viewer {
createdAt
}
_2: viewer {
createdAt
}
_3: viewer {
createdAt
}
}
デフォルトではフィールドとdepth によって +1 が加算される
By default, each field and level of depth adds one to the overall query complexity.
Complexityの制限
最大Complexityを設定し、それを超えるクエリを拒否することができる
これにより過度に複雑なクエリによるサーバーの過負荷を防ぐことができます。
Complexityの計算はカスタマイズ可能
https://zenn.dev/hsaki/books/golang-graphql/viewer/complexity#複雑度計算法のカスタマイズ