GraphQL Variables & Operation Selection¶
Passing Scalar Variables¶
Variables avoid string concatenation and guard against injection issues:
String userName;
bool active = false;
client.graphql("/graphql")
.query("query GetUser($id: ID!, $online: Boolean) { user(id: $id, online: $online) { name } }")
.variable("id", "usr_9912")
.variable("online", true)
.getData("user.name", &userName);
Struct Variables with REST_JSON_MAP¶
Custom C++ structs can be passed as variables directly:
struct SensorTelemetry {
float temp;
float pressure;
int battery;
REST_JSON_MAP(
REST_FIELD(temp),
REST_FIELD(pressure),
REST_FIELD(battery)
)
};
SensorTelemetry data{24.2f, 1013.25f, 98};
client.graphql("/graphql")
.mutation("mutation Log($input: TelemetryInput!) { record(data: $input) { id } }")
.variable("input", data);
Multi-Operation Documents and operationName¶
When a single query document contains multiple operations, select which one to execute: