Async-graphql
is a high-performance server-side library that supports all GraphQL specifications.
- Feature Comparison
- Book
- 中文文档
- Docs
- GitHub repository
- Cargo package
- Minimum supported Rust version: 1.57.0 or later
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% Safe Rust.
- Fully supports async/await
- Type safety
- Rustfmt friendly (Procedural Macro)
- Custom scalars
- Minimal overhead
- Easy integration (poem, actix_web, tide, warp, rocket ...)
- Upload files (Multipart request)
- Subscriptions (WebSocket transport)
- Custom extensions
- Apollo Tracing extension
- Limit query complexity/depth
- Error Extensions
- Apollo Federation
- Batch Queries
- Apollo Persisted Queries
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 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.
Apollo Studio is a cloud platform that helps you build, monitor, validate, and secure your organization's data graph. An existing extension is available for this crate here
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]
- 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
- rust-actix-graphql-sqlx-postgresql Using GraphQL with Rust and Apollo Federation
- entity-rs A simplistic framework based on TAO, Facebook's distributed database for Social Graph.
- vimwiki-server Provides graphql server to inspect and manipulate vimwiki files.
- Diana Diana is a GraphQL system for Rust that's designed to work as simply as possible out of the box, without sacrificing configuration ability.
- cindythink
- sudograph
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.
- GraphQL
- GraphQL Multipart Request
- GraphQL Cursor Connections Specification
- GraphQL over WebSocket Protocol
- Apollo Tracing
- Apollo Federation
Welcome to contribute !