Very simple GraphQL client for .NET/C#. Requires JSON.NET!
var client = new GraphQLClient("https://mygraphql.endpoint");
var query = @"query($Org:String!, $Items:Int!, $Cursor:String) {
organization(first:$Items, after:$Cursor) {
totalCount
pageInfo {
endCursor
hasNextPage
}
nodes {
name
login
avatarUrl
}
}
}";
var result = client.Query(query, new { Org = "some-org", Items = 10 });The query builder allows you to use a fluent interface to create a GraphQL query.
using GraphQL.Client.QueryBuilder;
//....
var query = GraphQLQueryBuilder.New("query", arguments =>
{
arguments.Var("Org").String().Required();
arguments.Var("Items").Int().Required();
arguments.Var("Cursor").String();
}).Query("organization", arguments =>
{
arguments.Param("first", "$Items");
arguments.Param("after", "$Cursor");
}, select =>
{
select.Field("totalCount");
select.Field("pageInfo").Select(pageInfo =>
{
pageInfo.Field("endCursor");
pageInfo.Field("hasNextPage");
});
select.Field("nodes").Select(nodes =>
{
nodes.Field("name");
nodes.Field("login");
nodes.Field("avatarUrl");
});
}).Build();
var result = client.Query(query, new { Org = "some-org", Items = 10 });var client = new GraphQLClient("https://mygraphql.endpoint", headers => {
headers[HttpRequestHeader.ContentType] = "application/json";
headers["X-Some-Header"] = "Some value";
});var result = client.Query(query, new { Org = "some-org", Items = 10 });
var nodes = result["organization"]["nodes"].ToObject<IEnumerable<MyObject>>();var result = client.Query(query, new { Org = "some-org", Items = 10 });
var root = result.DataAs<ResultObject>();var result = client.Query(query, new { Org = "some-org", Items = 10 });
var rawString = result.Raw;var result = client.Query(query, new { Org = "some-org", Items = 10 });
var headersDictionary = result.Headers;If the query contains errors, the Data object will be null and the Errors object will contain a list of errors reported by the GraphQl API.
var result = client.Query(badQuery, new { Org = "some-org", Items = 10 });
var errors = result.Errors;