GraphQL API avec C# : tutoriel pratique pas à pas

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

GraphQL API avec C# : tutoriel pratique pas à pas



Dans le développement web moderne, GraphQL devient une alternative de plus en plus populaire à l'API REST. Contrairement à REST, où chaque endpoint renvoie une structure de données fixe, GraphQL permet au client de demander exactement les données dont il a besoin. Dans ce tutoriel, nous allons créer une API GraphQL complète en C# (.NET) en utilisant la bibliothèque Hot Chocolate. Vous apprendrez à configurer le serveur, définir les types de données, implémenter des requêtes et des mutations, ainsi qu'ajouter des abonnements pour des mises à jour en temps réel.



Qu'est-ce que GraphQL et pourquoi l'utiliser avec C# ?



GraphQL est un langage de requête pour les API, développé par Facebook. Les principaux avantages :

  • Flexibilité des requêtes — le client décide quels champs obtenir
  • Point d'entrée unique — un seul endpoint pour toutes les requêtes
  • Typage fort — tous les types de données sont strictement définis
  • Absence de sur-récupération et de sous-récupération — vous obtenez exactement ce que vous avez demandé

Dans l'écosystème .NET, la meilleure bibliothèque pour implémenter GraphQL est Hot Chocolate. Elle prend en charge toutes les fonctionnalités de la spécification GraphQL, y compris les requêtes (queries), les mutations (mutations) et les abonnements (subscriptions).



Préparation du projet et installation des dépendances



Commençons par créer un nouveau projet ASP.NET Core. Ouvrez le terminal ou l'invite de commandes et exécutez :

dotnet new webapi -n GraphQLDemocd GraphQLDemo


Maintenant, installons le package Hot Chocolate :

dotnet add package HotChocolate.AspNetCoredotnet add package HotChocolate.AspNetCore.Playground


Créons un modèle de données pour notre API. Supposons que nous allons travailler avec des livres et des auteurs. Créez un dossier Models et ajoutez-y les classes :



// Models/Author.cspublic class Author{    public int Id { get; set; }    public string Name { get; set; }    public ICollection<Book> Books { get; set; }}

// Models/Book.cspublic class Book{ public int Id { get; set; } public string Title { get; set; } public int AuthorId { get; set; } public Author Author { get; set; }}


Création du schéma GraphQL et des résolveurs



Dans GraphQL, les composants clés sont les types, les requêtes (Query) et les mutations (Mutation). Créons un dossier GraphQL et ajoutons-y les fichiers :



// GraphQL/Query.cspublic class Query{    public IQueryable<Book> GetBooks([Service] ApplicationDbContext context)    {        return context.Books.Include(b => b.Author);    }

public Book GetBook(int id, [Service] ApplicationDbContext context) { return context.Books.Include(b => b.Author).FirstOrDefault(b => b.Id == id); }

public IQueryable<Author> GetAuthors([Service] ApplicationDbContext context) { return context.Authors.Include(a => a.Books); }}

// GraphQL/Mutation.cspublic class Mutation{ public async Task<Book> AddBook(string title, int authorId, [Service] ApplicationDbContext context) { var book = new Book { Title = title, AuthorId = authorId }; context.Books.Add(book); await context.SaveChangesAsync(); return book; }

public async Task<Author> AddAuthor(string name, [Service] ApplicationDbContext context) { var author = new Author { Name = name }; context.Authors.Add(author); await context.SaveChangesAsync(); return author; }}


Enregistrons maintenant ces classes dans Program.cs :



// Program.csvar builder = WebApplication.CreateBuilder(args);

builder.Services .AddDbContext<ApplicationDbContext>(options => options.U

Blogs

Book Recommendations