Skip to content

GraphQL Batching

Sending multiple operations in one HTTP request saves WiFi transmission time, TLS handshake overhead, and battery on ESP32 devices.


Batching Multiple Queries

auto batch = client.graphqlBatch("/graphql");

String deviceName;
int notificationCount = 0;
String weatherSummary;

// Operation 1:
auto& op1 = batch.addQuery("query { device { name } }");
op1.getData("device.name", &deviceName);

// Operation 2:
auto& op2 = batch.addQuery("query { unreadCount }");
op2.getData("unreadCount", &notificationCount);

// Operation 3:
auto& op3 = batch.addQuery("query { weather(city: \"Lisbon\") { summary } }");
op3.getData("weather.summary", &weatherSummary);

// Dispatched automatically or explicitly:
batch.execute();

if (client.isSuccess()) {
  Serial.printf("Device: %s\n", deviceName.c_str());
  Serial.printf("Notifications: %d\n", notificationCount);
  Serial.printf("Weather: %s\n", weatherSummary.c_str());
}