API GraphQL avec C# : tutoriel étape par étape pour les développeurs .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

Introduction à GraphQL sur la plateforme .NET

GraphQL est un langage de requête pour les API qui permet aux clients d'obtenir uniquement les données dont ils ont réellement besoin. Contrairement à REST, où la structure de la réponse est strictement définie par le serveur, GraphQL permet de formuler des requêtes de manière flexible. Dans ce tutoriel, nous allons créer une API GraphQL complète en C# en utilisant le framework Hot Chocolate — la solution la plus populaire pour .NET.

Nous parcourrons le chemin allant de l'installation à la création de requêtes complexes avec des mutations et des abonnements. Cet article est destiné aux développeurs familiers avec les bases de C# et d'ASP.NET Core.



1. Configuration du projet et installation des dépendances

Pour commencer, créons un nouveau projet ASP.NET Core. Vous pouvez utiliser Visual Studio, Rider ou la ligne de commande.

dotnet new web -n GraphQLDemocd GraphQLDemo

Installons maintenant le package Hot Chocolate — l'outil principal pour travailler avec GraphQL dans .NET :

dotnet add package HotChocolate.AspNetCore

De plus, pour travailler avec les requêtes via l'IDE GraphQL (Banana Cake Pop), installons :

dotnet add package HotChocolate.AspNetCore.Playground


1.1 Configuration de base de Program.cs

Ouvrez le fichier Program.cs et configurez les services :

var builder = WebApplication.CreateBuilder(args);

builder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

app.MapGraphQL();

app.Run();

Notez que nous enregistrons Query — c'est notre type racine pour la lecture des données. Pour l'instant, il est vide, mais nous allons le remplir.



2. Création du modèle de données et de la première requête

GraphQL fonctionne avec des types. Créons un modèle simple Book :

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

Définissons maintenant la classe Query, qui retournera les données :

public class Query{    private static List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 },        new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 }    };

public IQueryable<Book> GetBooks() => _books.AsQueryable();

public Book? GetBookById(int id) => _books.FirstOrDefault(b => b.Id == id);}

Lancez l'application et ouvrez http://localhost:5000/graphql. Vous verrez Banana Cake Pop — l'IDE intégré pour tester les requêtes. Essayez d'exécuter :

{  books {    title    author  }}

Vous obtiendrez uniquement les champs que vous avez demandés — c'est la puissance de GraphQL.



3. Mutations pour modifier les données

Les mutations sont l'équivalent des POST/PUT/DELETE dans REST. Elles permettent de modifier les données sur le serveur. Ajoutons la possibilité d'ajouter de nouveaux livres.



3.1 Définition du type d'entrée

Créons une classe pour les données d'entrée de la mutation :

public class AddBookInput{    public string Title { get; set; }    public string Author { get; set; }    public int Year { get; set; }}


3.2 Implémentation de la mutation

Ajoutons la classe Mutation :

public class Mutation{    private static List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 },        new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 }    };

public Book AddBook(AddBookInput input) { var newBook = new Book { Id = _books.Max(b => b.Id) + 1, Title = input.Title, Author = input.Author, Year = input.Year }; _books.Add(newBook); return newBook; }

Blogs

Book Recommendations