Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 863 Bytes

validation.md

File metadata and controls

41 lines (33 loc) · 863 Bytes

Query validation

Stop maliciously complex or invalid queries against your Keystone instance.

const { validation } = require('@keystonejs/app-graphql');

const app = new GraphQLApp({
  apollo: {
    validationRules: [validation.depthLimit(3)],
  },
});

Validators

  • depthLimit: limit nesting depth of queries
  • definitionLimit: limit number of definitions (queries, fragments, mutations)
  • fieldLimit: limit total number of fields returned in results (after expanding fragment spreads)

The following GraphQL has two definitions (contact, info), four fields (name, email, allUsers, friends), and a total depth of three:

fragment contact on User {
  name
  email
}
query info {
  allUsers {
    friends {
      ...contact
    }
  }
}