GraphQL en C# (.NET) : aperçu des bibliothèques et outils
GraphQL est un langage de requêtes pour API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Dans l'écosystème C# (.NET), il existe plusieurs bibliothèques puissantes pour implémenter des serveurs et clients GraphQL. Dans cet article, nous examinons les deux plus populaires : Hot Chocolate et GraphQL.NET. Les deux bibliothèques sont activement développées, disposent d'un code source ouvert et d'une excellente documentation.
1. Hot Chocolate — un framework moderne de ChilliCream
Hot Chocolate est un framework GraphQL complet pour .NET, prenant en charge à la fois les parties serveur et client. Il s'intègre avec ASP.NET Core et Entity Framework Core, offrant des attributs pratiques et une génération automatique de schéma.
Installation et serveur de base
Pour commencer, installez le package via NuGet :
dotnet add package HotChocolate.AspNetCoreCréez un serveur GraphQL simple :
// Définition du type de données
public class Book
{
public string Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
}
// Création de la classe Query
public class Query
{
public Book GetBook() =>
new Book
{
Id = "1",
Title = "Guerre et Paix",
Author = "Léon Tolstoï"
};
}
// Configuration dans Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddGraphQLServer()
.AddQueryType<Query>();
var app = builder.Build();
app.MapGraphQL();
app.Run();Après le lancement, le serveur sera accessible à l'adresse /graphql. Vous pouvez envoyer une requête via n'importe quel client GraphQL :
{
book {
title
author
}
}Hot Chocolate prend en charge les mutations, les abonnements, le filtrage, le tri, la pagination et l'intégration avec Entity Framework via UseProjection, UseFiltering et UseSorting.
Exemple avec mutation
public class Mutation
{
public Book AddBook(string title, string author) =>
new Book { Id = Guid.NewGuid().ToString(), Title = title, Author = author };
}
// Enregistrement
builder.Services
.AddGraphQLServer()
.AddQueryType<Query>()
.AddMutationType<Mutation>();2. GraphQL.NET — une bibliothèque légère et éprouvée
GraphQL.NET (également connue sous le nom de graphql-dotnet) est un port de l'implémentation JavaScript originale de GraphQL en C#. Elle propose une construction manuelle du schéma via des types et des champs, offrant un contrôle total sur la structure de l'API.
Installation et exemple
dotnet add package GraphQLdotnet add package GraphQL.SystemTextJsondotnet add package GraphQL.Server.Transports.AspNetCoreCréons un serveur simple :
// Définition du type
public class BookType : ObjectGraphType<Book>
{
public BookType()
{
Field(x => x.Id);
Field(x => x.Title);
Field(x => x.Author);
}
}
// Création du schéma
public class AppSchema : Schema
{
public AppSchema(IServiceProvider provider) : base(provider)
{
Query = provider.GetRequiredService<BookQuery>();
}
}
// Query
public class BookQuery : ObjectGraphType
{
public BookQuery()
{
Field<BookType>("book")
.Resolve(context => new Book
{
Id = "1",
Title = "Crime et Châtiment",
Author = "F.M. Dostoïevski"
});
}
}
// Configuration de Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<BookQuery>();
builder.Services.AddSingleton<AppSchema>();
builder.Services.AddGraphQL(b => b.AddSystemTextJson());
var app = builder.Build();\ Aussi dans la bibliothèque
Travailler avec les dates en Go (Golang) : bibliothèques time, carbon et now
Guide complet gRPC Java : tutoriel avec exemples
Géolocalisation et cartes en JavaScript (Node.js) : bibliothèques et outils
Travailler avec Kafka en Java : bibliothèques, configuration et exemples de code