Docs.rs
  • async-graphql-5.0.8
    • async-graphql 5.0.8
    • Docs.rs crate page
    • MIT/Apache-2.0
    • Links
    • Homepage
    • Repository
    • crates.io
    • Source
    • Owners
    • sunli829
    • Dependencies
      • async-graphql-derive ^5.0.8 normal
      • async-graphql-parser ^5.0.8 normal
      • async-graphql-value ^5.0.8 normal
      • async-stream ^0.3.0 normal
      • async-trait ^0.1.51 normal
      • base64 ^0.13.0 normal
      • bigdecimal ^0.3.0 normal
      • blocking ^1.0.2 normal
      • bson ^2.4.0 normal
      • bytes ^1.0.1 normal
      • chrono ^0.4.19 normal
      • chrono-tz ^0.6.1 normal
      • fast_chemail ^0.9.6 normal
      • fnv ^1.0.7 normal
      • futures-channel ^0.3.13 normal
      • futures-timer ^3.0.2 normal
      • futures-util ^0.3.0 normal
      • handlebars ^4.3.6 normal
      • hashbrown ^0.12.0 normal
      • http ^0.2.3 normal
      • indexmap ^1.6.2 normal
      • iso8601 ^0.6.0 normal
      • log ^0.4.16 normal
      • lru ^0.7.1 normal
      • mime ^0.3.15 normal
      • multer ^2.0.0 normal
      • num-traits ^0.2.14 normal
      • once_cell ^1.7.2 normal
      • opentelemetry ^0.18.0 normal
      • pin-project-lite ^0.2.6 normal
      • regex ^1.5.5 normal
      • rust_decimal ^1.14.3 normal
      • secrecy ^0.8.0 normal
      • serde ^1.0.125 normal
      • serde_cbor ^0.11.1 normal
      • serde_json ^1.0.64 normal
      • serde_urlencoded ^0.7.0 normal
      • sha2 ^0.10.2 normal
      • smol_str ^0.1.21 normal
      • static_assertions ^1.1.0 normal
      • tempfile ^3.2.0 normal
      • thiserror ^1.0.24 normal
      • time ^0.3.5 normal
      • tokio ^1.17.0 normal
      • tracing-futures ^0.2.5 normal
      • tracing ^0.1.35 normal
      • url ^2.2.1 normal
      • uuid ^1.0.0 normal
      • uuid ^0.8 normal
      • zxcvbn ^2.1.2 normal
      • futures-channel ^0.3.13 dev
      • tokio ^1.4.0 dev
    • Versions
    • 100% of the crate is documented
  • Go to latest version
  • Platform
    • i686-pc-windows-msvc
    • i686-unknown-linux-gnu
    • x86_64-apple-darwin
    • x86_64-pc-windows-msvc
    • x86_64-unknown-linux-gnu
  • Feature flags
  • Rust
    • About docs.rs
    • Privacy policy
    • Rust website
    • The Book
    • Standard Library API Reference
    • Rust by Example
    • The Cargo Guide
    • Clippy Documentation
logo

Crate async_graphql

logo

Crate async_graphql

  • Version 5.0.8
  • All Items
  • Re-exports
  • Modules
  • Macros
  • Structs
  • Enums
  • Traits
  • Functions
  • Type Definitions
  • Attribute Macros
  • Derive Macros

Crates

  • async_graphql
?
Change settings

Crate async_graphql

source ·
Expand description

A GraphQL server library implemented in Rust

Crates.io version Download docs.rs docs Unsafe Rust forbidden

Documentation

  • 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 Upload
  • bson: Integrate with the bson crate.
  • chrono: Integrate with the chrono crate.
  • chrono-tz: Integrate with the chrono-tz crate.
  • url: Integrate with the url crate.
  • uuid: Integrate with the uuid crate.
  • uuid08: Integrate with the uuid 0.8 crate.
  • string_number: Enable the StringNumber.
  • dataloader: Support DataLoader.
  • secrecy: Integrate with the secrecy crate.
  • decimal: Integrate with the rust_decimal crate.
  • bigdecimal: Integrate with the bigdecimal crate.
  • cbor: Support for serde_cbor.
  • smol_str: Integrate with the smol_str crate.
  • hashbrown: Integrate with the hashbrown crate.
  • time: Integrate with the time crate.
  • tokio-sync: Integrate with the tokio::sync::RwLock and tokio::sync::Mutex.
  • fast_chemail: Integrate with the fast_chemail crate.
  • tempfile: Save the uploaded content in the temporary file.
  • dynamic-schema: Support dynamic schema.

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

  • context
    Query context.
  • dataloaderdataloader
    Batch loading support, used to solve N+1 problem.
  • dynamicdynamic-schema
    Suppport for dynamic schema
  • extensions
    Extensions for schema
  • http
    A helper module that supports HTTP
  • resolver_utils
    Utilities for implementing OutputType::resolve.
  • types
    Useful GraphQL types.

Macros

  • scalar
    Define a scalar
  • value
    Construct a ConstValue.

Structs

  • CacheControl
    Cache control value
  • DeserializerError
    This type represents errors that can occur when deserializing.
  • Error
    An error with a message and optional extensions.
  • ErrorExtensionValues
    Extensions to the error.
  • InputValueError
    An error parsing an input value.
  • Lookahead
    A selection performed by a query.
  • Name
    A GraphQL name.
  • Number
    Represents a JSON number, whether integer or floating point.
  • Request
    GraphQL request.
  • Response
    Query response
  • SDLExportOptions
    Options for SDL export
  • Schema
    GraphQL schema.
  • SchemaBuilder
    Schema builder
  • SerializerError
    This type represents errors that can occur when serializing.
  • ServerError
    An error in a GraphQL server.
  • ValidationResult
    Validation results.
  • Variables
    Variables of a query.

Enums

  • BatchRequest
    Batch support for GraphQL requests, which is either a single query, or an array of queries
  • BatchResponse
    Response for batchable queries
  • IntrospectionMode
    Introspection mode
  • ParseRequestError
    An error parsing the request.
  • PathSegment
    A segment of path to a resolver.
  • ValidationMode
    Validation mode
  • Value
    A resolved GraphQL value, for example 1 or "Hello World!".

Traits

  • CustomDirective
    Represents a custom directive.
  • CustomValidator
    Represents a custom input value validator.
  • ErrorExtensions
    An error which can be extended into a Error.
  • Executor
    Represents a GraphQL executor
  • Guard
    Field guard
  • GuardExt
    An extension trait for Guard.
  • InputObjectType
    A GraphQL input object.
  • InputType
    Represents a GraphQL input type.
  • InterfaceType
    A GraphQL interface.
  • ObjectType
    A GraphQL object.
  • OneofObjectType
    A GraphQL oneof input object.
  • OutputType
    Represents a GraphQL output type.
  • ResultExt
    Extend a Result’s error value with ErrorExtensions.
  • SubscriptionType
    A GraphQL subscription object
  • TypeName
    Used to specify the GraphQL Type name.
  • UnionType
    A GraphQL interface.

Functions

  • from_value
    Interpret a ConstValue as an instance of type T.
  • to_value
    Convert a T into ConstValue which is an enum that can represent any valid GraphQL data.

Type Definitions

  • FieldError
    An alias of async_graphql::Error. Present for backward compatibility reasons.
  • FieldResult
    An alias of async_graphql::Result. Present for backward compatibility reasons.
  • InputValueResult
    An error parsing a value of type T.
  • Result
    An alias for Result<T, Error>.
  • ServerResult
    Alias for Result<T, ServerError>.

Attribute Macros

  • ComplexObject
    Define a complex GraphQL object for SimpleObject’s complex field resolver.
  • Directive
    Define a directive for query.
  • Object
    Define a GraphQL object with methods
  • Scalar
    Define a Scalar
  • Subscription
    Define a GraphQL subscription

Derive Macros

  • Description
    Attach a description to Object, Scalar or Subscription.
  • Enum
    Define a GraphQL enum
  • InputObject
    Define a GraphQL input object
  • Interface
    Define a GraphQL interface
  • MergedObject
    Define a merged object with multiple object types.
  • MergedSubscription
    Define a merged subscription with multiple subscription types.
  • NewType
    Define a NewType Scalar
  • OneofObject
    Define a GraphQL oneof input object
  • SimpleObject
    Define a GraphQL object with fields
  • Union
    Define a GraphQL union

Results

async_graphql::CustomDirective
Represents a custom directive.
async_graphql::context::ContextDirective
Context object for execute directive.
No results :(
Try on DuckDuckGo?

Or try looking in one of these:
  • The Rust Reference for technical details about the language.
  • Rust By Example for expository code examples.
  • The Rust Book for introductions to language features and the language itself.
  • Docs.rs for documentation of crates released on crates.io.
No results :(
Try on DuckDuckGo?

Or try looking in one of these:
  • The Rust Reference for technical details about the language.
  • Rust By Example for expository code examples.
  • The Rust Book for introductions to language features and the language itself.
  • Docs.rs for documentation of crates released on crates.io.