Extensions available
There are a lot of available extensions in the async-graphql
to empower your GraphQL Server, some of these documentations are documented here.
Analyzer
Available in the repository
The analyzer
extension will output a field containing complexity
and depth
in the response extension field of each query.
Apollo Persisted Queries
Available in the repository
To improve network performance for large queries, you can enable this Persisted Queries extension. With this extension enabled, each unique query is associated to a unique identifier, so clients can send this identifier instead of the corresponding query string to reduce requests sizes.
This extension doesn't force you to use some cache strategy, you can choose the caching strategy you want, you'll just have to implement the CacheStorage
trait:
#![allow(unused)] fn main() { extern crate async_graphql; use async_graphql::*; #[async_trait::async_trait] pub trait CacheStorage: Send + Sync + Clone + 'static { /// Load the query by `key`. async fn get(&self, key: String) -> Option<String>; /// Save the query by `key`. async fn set(&self, key: String, query: String); } }
References: Apollo doc - Persisted Queries
Apollo Tracing
Available in the repository
Apollo Tracing is an extension which includes analytics data for your queries. This extension works to follow the old and now deprecated Apollo Tracing Spec. If you want to check the newer Apollo Reporting Protocol, it's implemented by async-graphql Apollo studio extension for Apollo Studio.
Apollo Studio
Available at async-graphql/async_graphql_apollo_studio_extension
Apollo Studio is a cloud platform that helps you build, validate, and secure your organization's graph (description from the official documentation). It's a service allowing you to monitor & work with your team around your GraphQL Schema. async-graphql
provides an extension implementing the official Apollo Specification available at async-graphql-extension-apollo-tracing and Crates.io.
Logger
Available in the repository
Logger is a simple extension allowing you to add some logging feature to async-graphql
. It's also a good example to learn how to create your own extension.
OpenTelemetry
Available in the repository
OpenTelemetry is an extension providing an integration with the opentelemetry crate to allow your application to capture distributed traces and metrics from async-graphql
.
Tracing
Available in the repository
Tracing is a simple extension allowing you to add some tracing feature to async-graphql
. A little like the Logger
extension.