153 stable releases
new 2.8.2 | Apr 9, 2021 |
---|---|
2.7.2 | Mar 31, 2021 |
2.4.3 | Dec 23, 2020 |
2.1.6 | Nov 30, 2020 |
1.16.10 | Jul 17, 2020 |
#46 in Asynchronous
10,524 downloads per month
Used in 2 crates
645KB
17K
SLoC
A GraphQL server library implemented in Rust
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.46 or later
Safety
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% Safe Rust.
Features
- Fully supports async/await
- Type safety
- Rustfmt friendly (Procedural Macro)
- Custom scalars
- Minimal overhead
- Easy integration (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
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]
Benchmark
Ensure that there is no CPU-heavy process in background!
cd benchmark
#measure all with system malloc
cargo bench
#measure only chat run
cargo bench -- "chat run"
#measure all with jemalloc
cargo bench --features jemalloc
#measure only simple run with jemalloc
cargo bench --features jemalloc -- "simple run"
Now HTML report is available at benchmark/target/criterion/report
Read more here: https://bheisler.github.io/criterion.rs/book/criterion_rs.html
Integrations
- Actix-web async-graphql-actix-web
- Warp async-graphql-warp
- Tide async-graphql-tide
- Rocket async-graphql-rocket
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
Contribute
Welcome to contribute !
Dependencies
~19MB
~462K SLoC