Crate async_graphql
source · [−]Expand description
A GraphQL server library implemented in Rust
Documentation
- Feature Comparison
 - Book
 - 中文文档
 - Docs
 - GitHub repository
 - Cargo package
 - Minimum supported Rust version: 1.56.1 or later
 
Features
- Fully supports async/await
 - Type safety
 - Rustfmt friendly (Procedural Macro)
 - Custom scalars
 - Minimal overhead
 - Easy integration (poem, actix_web, tide, warp, rocket …)
 - File upload (Multipart request)
 - Subscriptions (WebSocket transport)
 - Custom extensions
 - Apollo Tracing extension
 - Limit query complexity/depth
 - Error Extensions
 - Apollo Federation
 - Batch Queries
 - Apollo Persisted Queries
 
Crate features
This crate offers the following features, all of which are not activated by default:
apollo_tracing: Enable the Apollo tracing extension.apollo_persisted_queries: Enable the Apollo persisted queries extension.log: Enable the logger extension.tracing: Enable the tracing extension.opentelemetry: Enable the OpenTelemetry extension.unblock: Support asynchronous reader for Uploadbson: Integrate with thebsoncrate.chrono: Integrate with thechronocrate.chrono-tz: Integrate with thechrono-tzcrate.url: Integrate with theurlcrate.uuid: Integrate with theuuidcrate.string_number: Enable the StringNumber.dataloader: Support DataLoader.decimal: Integrate with therust_decimalcrate.cbor: Support for serde_cbor.smol_str: Integrate with thesmol_strcrate.hashbrown: Integrate with thehashbrowncrate.time: Integrate with thetimecrate.
Integrations
- Poem async-graphql-poem
 - Actix-web async-graphql-actix-web
 - Warp async-graphql-warp
 - Tide async-graphql-tide
 - Rocket async-graphql-rocket
 - Axum async-graphql-axum
 
License
Licensed under either of
- Apache License, Version 2.0, (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 - MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
 
References
- GraphQL
 - GraphQL Multipart Request
 - GraphQL Cursor Connections Specification
 - GraphQL over WebSocket Protocol
 - Apollo Tracing
 - Apollo Federation
 
Examples
All examples are in the sub-repository, located in the examples directory.
Run an example:
git submodule update # update the examples repo
cd examples && cargo run --bin [name]Benchmarks
Ensure that there is no CPU-heavy process in background!
cd benchmark
cargo benchNow a HTML report is available at benchmark/target/criterion/report.
Re-exports
pub use async_graphql_parser as parser;pub use extensions::ResolveFut;pub use resolver_utils::ContainerType;pub use resolver_utils::EnumType;pub use resolver_utils::ScalarType;pub use context::*;pub use parser::Pos;pub use parser::Positioned;pub use types::*;Modules
Query context.
dataloaderBatch loading support, used to solve N+1 problem.
Extensions for schema
A helper module that supports HTTP
Utilities for implementing
OutputType::resolve.
Useful GraphQL types.
Macros
Structs
Cache control values
This type represents errors that can occur when deserializing.
An error with a message and optional extensions.
Extensions to the error.
An error parsing an input value.
A selection performed by a query.
A GraphQL name.
Represents a JSON number, whether integer or floating point.
GraphQL request.
Query response
GraphQL schema.
Schema builder
This type represents errors that can occur when serializing.
An error in a GraphQL server.
Validation results.
Variables of a query.
Enums
Batch support for GraphQL requests, which is either a single query, or an array of queries
Response for batchable queries
An error parsing the request.
A segment of path to a resolver.
Validation mode
A resolved GraphQL value, for example 1 or "Hello World!".
Traits
Represents a custom directive.
Represents a custom input value validator.
An error which can be extended into a Error.
Field guard
An extension trait for Guard.
A GraphQL input object.
Represents a GraphQL input type.
A GraphQL interface.
A GraphQL object.
Represents a GraphQL output type.
Extend a Result’s error value with ErrorExtensions.
A GraphQL interface.
Functions
Interpret a ConstValue as an instance of type T.
Convert a T into ConstValue which is an enum that can represent any valid GraphQL data.
Type Definitions
An alias of async_graphql::Error. Present for backward compatibility reasons.
An alias of async_graphql::Result. Present for backward compatibility reasons.
An error parsing a value of type T.
An alias for Result<T, Error>.
Alias for Result<T, ServerError>.
Attribute Macros
Define a complex GraphQL object for SimpleObject’s complex field resolver.
Define a directive for query.
Define a GraphQL object with methods
Define a Scalar
Define a GraphQL subscription
Derive Macros
Attach a description to Object, Scalar or Subscription.
Define a GraphQL enum
Define a GraphQL input object
Define a GraphQL interface
Define a merged object with multiple object types.
Define a merged subscription with multiple subscription types.
Define a NewType Scalar
Define a GraphQL object with fields
Define a GraphQL union