public async Task <HttpResponseMessage> PostGraphQLAsync(GraphQLQueryRequest request) { var inputs = request.Variables.ToInputs(); var queryToExecute = request.Query; var result = await this.executer.ExecuteAsync(_ => { _.Schema = this.schema; _.Query = queryToExecute; _.OperationName = request.OperationName; _.Inputs = inputs; _.UserContext = this.ContainsCremaToken ? this.Authentication : null; _.ComplexityConfiguration = new ComplexityConfiguration { MaxDepth = 15 }; _.FieldMiddleware.Use <InstrumentFieldsMiddleware>(); _.ExposeExceptions = true; _.FieldNameConverter = new DefaultFieldNameConverter(); }).ConfigureAwait(false); var httpResult = result.Errors?.Count > 0 ? HttpStatusCode.BadRequest : HttpStatusCode.OK; var json = await this.writer.WriteToStringAsync(result); var response = this.Request.CreateResponse(httpResult); response.Content = new StringContent(json, Encoding.UTF8, "application/json"); return(response); }
public async Task <IActionResult> Query([FromBody] GraphQLQueryRequest query) { if (query is null || string.IsNullOrWhiteSpace(query.Query)) { throw new System.ArgumentNullException(nameof(query)); } var inputs = query.Variables.ToInputs(); var executionOptions = new ExecutionOptions { Schema = schema, Query = query.Query, Inputs = inputs, }; var result = await this.documentExecuter.ExecuteAsync(executionOptions); return(result.Errors?.Any() ?? false? this.BadRequest(result.Errors) : this.Ok(result.Data)); }