Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.75 KB

File metadata and controls

39 lines (29 loc) · 1.75 KB

GraphQL endpoint

The SDK provides support for the usage of the GraphQL endpoint.

IGraphQLResponse response = await _projectApiRoot.Graphql().Post(new GraphQLRequest() { 
        Query = "query($productFilter:String) { products(where: $productFilter) { results { id } } }",
        Variables = new GraphQLVariablesMap()
        {
            {"productFilter", "id = \"" + product.getId() + "\""}
        }
    })
    .ExecuteAsync();
Assert.IsType<JsonElement>(response.Data);
Assert.IsType<string>(((JsonElement)response.Data).GetProperty("products").GetProperty("results")[0].GetProperty("id").GetString());                        

GraphQL package

The SDK comes with a module for enhanced GraphQL support. With the help of ZeroQL we generate a type safe query and projection builder. The results will be mapped to the correct response type.

The GraphQLClient class has methods for all available operations in the GraphQL schema

var client = _projectApiRoot.GraphQLClient();

var variables = new { productFilter = $@"id = ""{productId}""" };
var response = await client.Query(variables, static (i, o) => o.Products(where: i.productFilter, selector: r => new { results = r.Results(product => new { product.Id }) }));

The GraphQLDataResponse returns the mapped result data defined as defined by the selector

var response = await client.Query(variables, static (i, o) => o.Products(where: i.productFilter, selector: r => new { results = r.Results(product => new { product.Id }) }));

Assert.Null(response.Errors);
Assert.NotNull(response.Data?.results[0].Id);