How graphql-go/graphql works
This repository is a Go GraphQL implementation. A client submits an operation through graphql.Do; the library parses it into an AST, validates it against a schema, executes the requested query or mutation, and returns data and errors. Subscriptions are a separate supported operation mode. The graph also includes schema introspection and the language tooling surrounding parsing. Some source excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: graphql.go Do entry point · schema.go Schema · parser.go Parser · validator.go Document validation
Components 21
GraphQL API
- Operation request
graphql.go - Do entry point
graphql.go - Execution result
graphql.go - GraphQL errors
gqlerrors/error.go
Language Processing
- Parser
language/parser/parser.go - Lexer
language/lexer/lexer.go - Source text
language/source/source.go - GraphQL AST
language/ast
Schema And Execution
- Schema
schema.go - GraphQL types
types.go - Document validation
validator.go - Validation rules
rules.go - Operation executor
executor.go - Execution planning
plan.go - Input and output values
values.go - Subscriptions
subscription.go - Introspection
introspection.go
Language Tooling
- AST visitor
language/visitor/visitor.go - AST type info
language/typeInfo/type_info.go - AST printer
language/printer/printer.go
Other components
- GraphQL client
Connections 25
- GraphQL client → Operation request: submits
- Operation request → Do entry point: provides input
- Do entry point → Parser: parses operation
- Parser → Source text: reads text
- Parser → Lexer: requests tokens
- Lexer → Source text: scans text
- Parser → GraphQL AST: builds AST
- Do entry point → Document validation: validates operation
- Document validation → Validation rules: applies rules
- Document validation → Schema: checks against
- Do entry point → Operation executor: executes operation
- Operation executor → Schema: resolves against
- Operation executor → Execution planning: plans execution
- Operation executor → Input and output values: coerces values
- Do entry point → Subscriptions: dispatches subscription
- Subscriptions → Schema: uses schema
- Schema → GraphQL types: contains type definitions
- Schema → Introspection: provides introspection
- Do entry point → GraphQL errors: reports errors
- Document validation → AST visitor: traverses AST
- Validation rules → AST visitor: defines visitors
- AST visitor → AST type info: maintains type context
- AST printer → AST visitor: prints AST nodes
- Do entry point → Execution result: returns result
- Execution result → GraphQL client: delivers data