GraphQL en C# (.NET): bibliotecas Hot Chocolate y GraphQL.NET para crear API

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

GraphQL en C# (.NET): revisión de bibliotecas y herramientas



GraphQL es un lenguaje de consultas para API que permite a los clientes solicitar únicamente los datos que realmente necesitan. En el ecosistema de C# (.NET) existen varias bibliotecas potentes para implementar servidores y clientes GraphQL. En este artículo analizaremos las dos más populares: Hot Chocolate y GraphQL.NET. Ambas bibliotecas se desarrollan activamente, tienen código abierto y una excelente documentación.



1. Hot Chocolate — un framework moderno de ChilliCream



Hot Chocolate es un framework GraphQL completo para .NET que admite tanto la parte del servidor como la del cliente. Se integra con ASP.NET Core y Entity Framework Core, ofreciendo atributos convenientes y generación automática de esquemas.



Instalación y servidor básico



Para comenzar, instale el paquete a través de NuGet:



dotnet add package HotChocolate.AspNetCore


Cree un servidor GraphQL simple:



// Definimos el tipo de datospublic class Book{    public string Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }}

// Creamos la clase Querypublic class Query{ public Book GetBook() => new Book { Id = "1", Title = "Guerra y paz", Author = "León Tolstói" };}

// Configuramos en Program.csvar builder = WebApplication.CreateBuilder(args);builder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();app.MapGraphQL();app.Run();


Después de iniciar, el servidor estará disponible en la dirección /graphql. Puede enviar una consulta a través de cualquier cliente GraphQL:



{  book {    title    author  }}


Hot Chocolate admite mutaciones, suscripciones, filtrado, ordenación, paginación e integración con Entity Framework mediante UseProjection, UseFiltering y UseSorting.



Ejemplo con mutación



public class Mutation{    public Book AddBook(string title, string author) =>        new Book { Id = Guid.NewGuid().ToString(), Title = title, Author = author };}

// Registrobuilder.Services .AddGraphQLServer() .AddQueryType<Query>() .AddMutationType<Mutation>();


2. GraphQL.NET — una biblioteca ligera y probada por el tiempo



GraphQL.NET (también conocida como graphql-dotnet) es un puerto de la implementación original de GraphQL en JavaScript a C#. Ofrece la construcción manual del esquema a través de tipos y campos, lo que brinda control total sobre la estructura de la API.



Instalación y ejemplo



dotnet add package GraphQLdotnet add package GraphQL.SystemTextJsondotnet add package GraphQL.Server.Transports.AspNetCore


Creemos un servidor simple:



// Definimos el tipopublic class BookType : ObjectGraphType<Book>{    public BookType()    {        Field(x => x.Id);        Field(x => x.Title);        Field(x => x.Author);    }}

// Creamos el esquemapublic class AppSchema : Schema{ public AppSchema(IServiceProvider provider) : base(provider) { Query = provider.GetRequiredService<BookQuery>(); }}

// Querypublic class BookQuery : ObjectGraphType{ public BookQuery() { Field<BookType>("book") .Resolve(context => new Book { Id = "1", Title = "Crimen y castigo", Author = "F.M. Dostoievski" }); }}

// Configuración de Program.csvar builder = WebApplication.CreateBuilder(args);builder.Services.AddSingleton<BookQuery>();builder.Services.AddSingleton<AppSchema>();builder.Services.AddGraphQL(b => b.AddSystemTextJson());

var app = builder.Build();\

Recommendations