SmartGraphQLClient 1.1.0
dotnet add package SmartGraphQLClient --version 1.1.0
NuGet\Install-Package SmartGraphQLClient -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SmartGraphQLClient" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SmartGraphQLClient --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SmartGraphQLClient, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SmartGraphQLClient as a Cake Addin #addin nuget:?package=SmartGraphQLClient&version=1.1.0 // Install SmartGraphQLClient as a Cake Tool #tool nuget:?package=SmartGraphQLClient&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SmartGraphQLClient
Back-to-back GraphQL client using Linq-syntax
Install NuGet package
Using Package Manager:
Install-Package SmartGraphQLClient
or
Using .NET CLI:
dotnet add package SmartGraphQLClient
Usage
1. Add required services to DI
using SmartGraphQLClient;
services.AddSmartGraphQLClient();
2. Write GraphQL-request with Linq-syntax
using SmartGraphQLClient;
GraphQLHttpClient client = ... // from DI
var users = await client.Query<UserModel>("users")
.Include(x => x.Roles)
.ThenInclude(x => x.Users)
.Where(x => x.UserName.StartsWith("A") || x.Roles.Any(r => r.Code == RoleCode.ADMINISTRATOR))
.OrderBy(x => x.Id)
.ThenByDescending(x => x.UserName)
.Select(x => new
{
x.Id,
Name = x.UserName,
x.Roles,
IsAdministrator = x.Roles.Any(r => r.Code == RoleCode.ADMINISTRATOR)
})
.Skip(5)
.Take(10)
.Argument("secretKey", "1234")
.ToListAsync();
Explanation
When you call materializing method (ToListAsync()
, ToArrayAsync()
, FirstAsync()
, etc.), the GraphQLHttpClient
will build a string query and send it to the GraphQL-server, get a response and materialize the result.
Query-string from example:
{
users (
where: {
or: [
{ userName: { startsWith: "A" } }
{ roles: { some: { code: { eq: ADMINISTRATOR } } } }
]
}
order: [
{ id: ASC }
{ userName: DESC }
]
skip: 5
take: 10
secretKey: "1234"
) {
id
userName
roles {
code
name
description
id
users {
userName
age
id
}
}
}
}
More examples
See more examples in unit-tests directory:
- more requests (
ToListAsync()
,ToPageAsync()
,FirstOrDefaultAsync()
) - attributes (
GraphQLEndpointAttribute
,GraphQLIgnoreAttribute
,GraphQLPropertyNameAttribute
) - authorized graphql-http-client (
IGraphQLAuthorizationService<>
for providing tokens in runtime and cache tokens) - and more
Compatibility
Requests were tested on HotChocolate GraphQL-server. See their documentation.
Features
feature's name | package's version | |
---|---|---|
Build Where-string | 1.0.0 | ✅ |
Build Select-string | 1.0.0 | ✅ |
Build Order-string | 1.0.0 | ✅ |
Offset paging (skip, take) | 1.0.0 | ✅ |
Custom arguments | 1.0.0 | ✅ |
Execute raw query | 1.1.0 | ✅ |
Cursor paging | ❌ |
Links
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Http (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.