API GraphQL avec C# : Guide é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 et C#

GraphQL est un langage de requête pour les API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Contrairement à REST, où la structure de la réponse est fixe, GraphQL permet de formuler des requêtes de manière flexible et d'obtenir exactement ce qui est nécessaire. Dans ce tutoriel, nous allons voir comment créer une API GraphQL complète sur la plateforme C# (.NET) en utilisant la bibliothèque Hot Chocolate.

Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés qui souhaitent maîtriser une approche moderne de la construction d'API. Nous passerons par toutes les étapes : de la configuration du projet à l'implémentation des requêtes et des mutations. À la fin de l'article, vous disposerez d'un serveur GraphQL fonctionnel, prêt à être intégré avec n'importe quel client.



Installation et configuration du projet

La première chose à faire est de créer un nouveau projet ASP.NET Core. Ouvrez un terminal ou une invite de commandes et exécutez la commande :

dotnet new web -n GraphQLDemocd GraphQLDemo

Ajoutons maintenant le package Hot Chocolate — c'est la bibliothèque principale pour travailler avec GraphQL dans .NET :

dotnet add package HotChocolate.AspNetCore

Après l'installation, ouvrez le fichier Program.cs et configurez les services. Voici la configuration minimale pour lancer GraphQL :

using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// Ajout des services GraphQLbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

// Connexion du middleware pour GraphQLapp.MapGraphQL();

app.Run();

Notez que nous n'avons pas encore créé la classe Query. C'est notre type racine qui définit les requêtes disponibles. Nous allons la créer dans la section suivante.



Définition du schéma : types et résolveurs

Création du modèle de données

Commençons par définir un modèle de données simple. Prenons un livre :

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

Création de la classe Query

Créons maintenant la classe Query qui retournera les données. Dans Hot Chocolate, les résolveurs sont des méthodes ordinaires, qui peuvent être synchrones ou asynchrones :

public class Query{    private static readonly List<Book> Books = new()    {        new Book { Id = "1", Title = "Война и мир", Author = "Лев Толстой", Year = 1869 },        new Book { Id = "2", Title = "Преступление и наказание", Author = "Фёдор Достоевский", Year = 1866 }    };

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

public Book? GetBook(string id) => Books.FirstOrDefault(b => b.Id == id);}

La méthode GetBooks retourne la liste de tous les livres, et GetBook retourne un livre par son identifiant. Hot Chocolate convertit automatiquement ces méthodes en champs du schéma GraphQL.

Configuration des types (optionnelle)

Il est parfois nécessaire d'indiquer explicitement quels champs doivent être disponibles. Pour cela, on peut utiliser des attributs ou l'API Fluent. Exemple avec des attributs :

public class Book{    [GraphQLName("id")]    public string Id { get; set; }

[GraphQLNonNullType] public string Title { get; set; }

public string Author { get; set; } public int Year { get; set; }}

Lancez maintenant le projet avec la commande dotnet run et accédez dans votre navigateur à l'adresse http://localhost:5000/graphql. Vous verrez l'interface intégrée Banana Cake Pop — un environnement pour tester les requêtes.



Implémentation des mutations (création, mise à jour, suppression)

Les mutations dans GraphQL sont utilisées pour modifier les données. Créons une classe Mutation et ajoutons des méthodes pour travailler avec les livres.

                

Blogs

Book Recommendations