GraphQL pour C# (.NET) : Guide complet de la bibliothèque GraphQL.NET

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 JSON


Si 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 tests


Cré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

Recommendations