startServer function
Future<void>
startServer({
- required HttpServer server,
- required GrapheneQuery query,
- required GrapheneMutation mutations,
Implementation
Future<void> startServer({
required HttpServer server,
required GrapheneQuery query,
required GrapheneMutation mutations,
})async{
//URL in which the server is running
print("http://${server.address.address}:${server.port}");
//Handle all of the incoming requests
await server.forEach((HttpRequest request)async{
if(request.requestedUri.path == "/graphene" && request.method == "POST"){
try{
String requestBody = await utf8.decodeStream(request);
Map<String,dynamic> parsedRequest = jsonDecode(requestBody);
//Handle request
dynamic responseData;
if(parsedRequest["query"] != null){
responseData = await compute(query.resolver[parsedRequest["query"]]!, parsedRequest["variables"] as Map<String,dynamic>);
}else if(parsedRequest["mutation"] != null){
responseData = await compute(mutations.resolver[parsedRequest["mutation"]]!, parsedRequest["variables"] as Map<String,dynamic>);
}else{
Map<String,dynamic> error = {
"error": "No query or mutation found",
};
responseData = jsonEncode(error);
}
//Generate a response
request.response.write(jsonEncode({
"data": responseData,
}));
await request.response.close();
}catch(err){
Map<String,dynamic> error = {
"error": err is String ? err : err.toString(),
};
request.response.write(jsonEncode(error));
await request.response.close();
}
}else{
//Return an error
Map<String,dynamic> error = {
"error": "Invalid Request",
};
request.response.write(jsonEncode(error));
request.response.close();
}
});
}