```rs use std::error::Error;
use asyncgraphql::*; use asyncgraphql_poem::; use poem::{, listener::TcpListener};
struct Query;
impl Query { async fn howdy(&self) -> &'static str { "partner" } }
async fn main() -> Result<(), Box
// start the http server let app = Route::new().at("/", get(graphiql).post(GraphQL::new(schema))); println!("GraphiQL: http://localhost:8000"); Server::new(TcpListener::bind("0.0.0.0:8000")).run(app).await?; Ok(()) } ```
```rs use std::error::Error;
use asyncgraphql::dynamic::*; use asyncgraphql_poem::; use poem::{, listener::TcpListener};
let query = Object::new("Query") .field(Field::new("howdy", TypeRef::namednn(TypeRef::STRING), || FieldFuture::new(async { "partner" })));
async fn main() -> Result<(), Box
// start the http server let app = Route::new().at("/", get(graphiql).post(GraphQL::new(schema))); println!("GraphiQL: http://localhost:8000"); Server::new(TcpListener::bind("0.0.0.0:8000")).run(app).await?; Ok(()) } ```
Note: Minimum supported Rust version: 1.59.0 or later
All examples are in the sub-repository, located in the examples directory.
shell
git submodule update # update the examples repo
cd examples && cargo run --bin [name]
Integrations are what glue async-graphql with your web server, here are provided ones, or you can build your own!
This crate offers the following features, all of which are not activated by default:
| feature | enables |
|:-------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 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 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 |
One of the tools used to monitor your graphql server in production is Apollo Studio. Apollo Studio is a cloud platform that helps you build, monitor, validate, and secure your organization's data graph.
Add the extension crate async_graphql_apollo_studio_extension to make this avaliable.
async-graphql in production?Licensed under either of