Bibliothèque GraphQL C# (.NET) — GraphQL.NET
GraphQL est un langage de requête pour API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Dans l'écosystème .NET, l'une des implémentations les plus populaires est la bibliothèque GraphQL.NET (également connue sous le nom de graphql-dotnet). Elle fournit des outils puissants pour créer des API flexibles, typées et efficaces sur la plateforme C# (.NET).
Dans cet article, nous allons examiner en détail comment utiliser GraphQL.NET, aborder les concepts clés et fournir des exemples pratiques de code.
Qu'est-ce que GraphQL.NET ?
GraphQL.NET est une bibliothèque open source qui implémente la spécification GraphQL pour la plateforme .NET. Elle prend en charge à la fois .NET Core et .NET Framework. Principales fonctionnalités :
- Création de schémas fortement typés en C#.
- Prise en charge des requêtes (Query), des mutations (Mutation) et des abonnements (Subscription).
- Validation et exécution intégrées des requêtes.
- Intégration avec les frameworks web populaires (ASP.NET Core, Nancy et autres).
- Prise en charge des abonnements via WebSockets (SignalR).
Installation et configuration
Pour commencer, installez le package via NuGet :
dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson // pour la sérialisation JSONSi vous utilisez ASP.NET Core, installez également :
dotnet add package GraphQL.Server.Transports.AspNetCoredotnet add package GraphQL.Server.Ui.Playground // interface utilisateur intégrée pour les testsCréation du premier schéma
GraphQL est construit autour d'un schéma qui définit les types de données et les opérations disponibles. Prenons un exemple simple — une API pour obtenir des informations sur les livres.
Étape 1. Définissez le modèle de données :
public class Book{ public string Id { get; set; } public string Title { get; set; } public string Author { get; set; } public int Pages { get; set; }}Étape 2. Créez les types GraphQL :
public class BookType : ObjectGraphType<Book>{ public BookType() { Field(x => x.Id).Description("Identifiant du livre"); Field(x => x.Title).Description("Titre du livre"); Field(x => x.Author).Description("Auteur"); Field(x => x.Pages).Description("Nombre de pages"); }}Étape 3. Définissez la requête racine (Query) :
public class BookQuery : ObjectGraphType{ public BookQuery(IDataStore dataStore) { Field<BookType>("book") .Arguments(new QueryArguments(new QueryArgument<StringGraphType> { Name = "id" })) .Resolve(context => dataStore.GetBookById(context.GetArgument<string>("id")));
Field<ListGraphType<BookType>>("books") .Resolve(context => dataStore.GetAllBooks()); }}Étape 4. Assemblez le schéma :
public class BookSchema : Schema{ public BookSchema(IServiceProvider provider) : base(provider) { Query = provider.GetRequiredService<BookQuery>(); }}Intégration avec ASP.NET Core
Enregistrez les services dans Program.cs (ou Startup.cs) :
builder.Services.AddGraphQL(b => b .AddSystemTextJson() .AddSchema<BookSchema>() .AddGraphTypes(typeof(BookType).Assembly));
builder.Services.AddScoped<IDataStore, InMemoryDataStore>();Ajoutez le middleware :
app.UseGraphQL<BookSchema>(); // point de terminaison par défaut /graphqlapp.UseGraphQLPlayground(); // interface utilisateur pour les tests (optionnel)Exécution d'une requête
Vous pouvez maintenant
Aussi dans la bibliothèque
Planificateur de tâches Kotlin : kotlinx-coroutines-core et bibliothèque korGE
SwiftConfig: Gestion de configuration d'applications en Swift
Surveillance des applications Node.js : Outils et bibliothèques