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.AspNetCoreCree 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.AspNetCoreCreemos 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();\ También en la biblioteca
Creación de herramientas CLI en Node.js: revisión de los frameworks Commander, Yargs e Inquirer
Nodemailer — envío de correos electrónicos con TypeScript
Cliente HTTP para Java: mejores bibliotecas para trabajar con HTTP
Jest para TypeScript: Guía completa de pruebas
Geolocalización y mapas en Kotlin: bibliotecas, herramientas y ejemplos