GraphQL Query Batching

GraphCDN supports GraphQL Query Batching out of the box without any special configuration or support from your backend services required.

While a usual GraphQL JSON payload looks like this:

{ "query": "{ roadster { name } }" }

With query batching you can instead send multiple queries via a single request like this:

[
{ "query": "{ roadster { name } }" },
{ "query": "{ launchesPast(limit: 5) { mission_name, launch_date_utc } }" }
]

When GraphCDN receives a set of batched queries, they get analyzed at the edge locations, split into individual requests, and then handled concurrently by either the cache itself (if results for that query have already been cached) or sent back to the GraphQL backend servers configured for that service.

GraphCDN will then wait until all requests have been answered, merge the individual repsonses and send them back to the client.

There is no special configuration needed to enable support for Query Batching and any cache rules and scopes that you have configured for your service will apply to the individual queries included in a batch as well.

If you want to give this a try and don't have a service at hand, feel free to user our SpaceX GraphQL API instance. To run a batched query, take a look at the examples below (or feel free to come up with your own and run it against the above service)

# Batched query asking for information on the space roadster as well as the last 3 SpaceX launches
curl --location --request POST 'https://spacex-api.graphcdn.app/' --header 'Content-Type: application/json' --data-raw '[ { "query": "{ roadster { name details wikipedia norad_id speed_kph earth_distance_km mars_distance_km } }" }, { "query": "{ launchesPast(limit: 5) { mission_name launch_date_utc launch_site { site_name_long } links { article_link video_link } } }" } ]'

The (nicely formatted) query itself looks like this:

[
{
"query": "{
roadster {
name
details
wikipedia
norad_id
speed_kph
earth_distance_km
mars_distance_km
}
}"
},
{
"query": "{
launchesPast(limit: 5) {
mission_name
launch_date_utc
launch_site {
site_id
site_name
site_name_long
}
links {
article_link
video_link
}
}
}"
}
]

If you have any questions or are running into issues with batched queries, please let us know at support@graphcdn.io or via the chat button on this page.