request method
Future<Map>
request(
- JsonQuery query, {
- TransactionHeaders? headers,
- Transaction? transaction,
override
Sends a request to the engine.
query
is the query to be sent to the engine.headers
are the headers to be sent with the request.transaction
is the transaction to be used for the request.
Implementation
@override
Future<Map> request(
JsonQuery query, {
TransactionHeaders? headers,
Transaction? transaction,
}) async {
headers ??= TransactionHeaders();
await start();
final endpoint = await _serverEndpoint();
if (transaction != null) {
headers.set('x-transaction-id', transaction.id);
}
final response = await fetch(
endpoint,
headers: headers,
body: query.toJson(),
method: 'POST',
);
final result = await response.json();
return switch (result) {
{'data': final Map data} => deserializeJsonResponse(data),
{'errors': final Iterable errors} => throw Exception(errors),
_ => throw Exception(result),
};
}