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(v2)
- 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](extensions/apollo_persisted_queries/struct. ApolloPersistedQueries.html).log
: Enable the logger extension.tracing
: Enable the tracing extension.opentelemetry
: Enable the OpenTelemetry extension.unblock
: Support asynchronous reader for Uploadbson
: Integrate with thebson
crate.chrono
: Integrate with thechrono
crate.chrono-tz
: Integrate with thechrono-tz
crate.url
: Integrate with theurl
crate.uuid
: Integrate with theuuid
crate.uuid08
: Integrate with theuuid 0.8
crate.string_number
: Enable the StringNumber.dataloader
: Support DataLoader.secrecy
: Integrate with thesecrecy
crate.decimal
: Integrate with therust_decimal
crate.bigdecimal
: Integrate with thebigdecimal
crate.cbor
: Support for serde_cbor.smol_str
: Integrate with thesmol_str
crate.hashbrown
: Integrate with thehashbrown
crate.time
: Integrate with thetime
crate.tokio-sync
Integrate with thetokio::sync::RwLock
andtokio::sync::Mutex
.fast_chemail
: Integrate with thefast_chemail
crate.
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 bench
Now 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 parser::Pos;
pub use parser::Positioned;
pub use resolver_utils::ContainerType;
pub use resolver_utils::EnumType;
pub use resolver_utils::ScalarType;
pub use context::*;
pub use types::*;
Modules
Query context.
dataloader
dataloader
Batch 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 value
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
Options for SDL export
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
Introspection mode
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.
A GraphQL oneof input object.
Represents a GraphQL output type.
Extend a
Result
’s error value with
ErrorExtensions
.A GraphQL subscription object
Used to specify the GraphQL Type name.
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 oneof input object
Define a GraphQL object with fields
Define a GraphQL union