GraphQL en 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 pour C# (.NET) : GraphQL.NET



GraphQL est un langage de requête moderne pour les API, qui permet aux clients de demander uniquement les données nécessaires, réduisant ainsi la redondance et accélérant le fonctionnement des applications. Pour la plateforme .NET, il existe une puissante bibliothèque GraphQL.NET qui permet aux développeurs C# de créer des parties serveur entièrement compatibles avec la spécification GraphQL. Dans cet article, nous allons détailler ses fonctionnalités, ses avantages et fournir des exemples pratiques.



Qu'est-ce que GraphQL.NET ?



GraphQL.NET est une bibliothèque open-source pour C# (.NET) implémentant la spécification GraphQL. Elle fournit des outils pour définir des schémas (types, requêtes, mutations et abonnements), traiter les requêtes entrantes, valider et exécuter la logique. La bibliothèque est activement maintenue par la communauté et utilisée dans des environnements de production.



Caractéristiques clés :

  • Définition flexible du schéma — types, interfaces, types union et énumérations.
  • Prise en charge des requêtes (Query), mutations (Mutation) et abonnements (Subscription).
  • Intégration avec les conteneurs DI (par exemple, Microsoft.Extensions.DependencyInjection).
  • Validation et analyse des requêtes côté serveur.
  • Prise en charge de DataLoader pour optimiser les requêtes N+1.
  • Outils de test et de débogage.


Installation et configuration



L'installation se fait via le gestionnaire de packages NuGet. Exécutez la commande :

dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson


Pour ASP.NET Core, vous aurez également besoin du package middleware :

dotnet add package GraphQL.Server.Transports.AspNetCore


Création d'une API GraphQL simple



1. Définition des types de données



Créez d'abord un modèle de données et le type GraphQL correspondant :

public class Book{    public int Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }}

public class BookType : ObjectType<Book>{ protected override void Configure(IObjectTypeDescriptor<Book> descriptor) { descriptor.Field(b => b.Id).Type<NonNullType<IntType>>(); descriptor.Field(b => b.Title).Type<NonNullType<StringType>>(); descriptor.Field(b => b.Author).Type<StringType>(); }}


2. Définition des requêtes (Query)



Créez maintenant la classe Query qui gérera les requêtes :

public class Query{    private readonly List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell" },        new Book { Id = 2, Title = "Brave New World", Author = "Aldous Huxley" }    };

public Book GetBook(int id) { return _books.FirstOrDefault(b => b.Id == id); }

public List<Book> GetBooks() { return _books; }}


Ensuite, enregistrez cette classe dans le schéma :

public class BookSchema : Schema{    public BookSchema(IServiceProvider provider) : base(provider)    {        Query = provider.GetRequiredService<Query>();    }}


3. Configuration dans Startup.cs



Ajoutez les services et le middleware dans ASP.NET Core :

public void ConfigureServices(IServiceCollection services){    services.AddGraphQL(builder => builder        .AddSchema<BookSchema>()        .AddSystemTextJson());}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ app.UseGraphQL<BookSchema>(); app.UseGraphQLPlayground(); // Pour les tests}


Mutations (Mutation) pour modifier les données



Ajoutons la possibilité d'ajouter des livres via des mutations :

Recommendations