GraphQL para C# (.NET): Guía completa de la biblioteca GraphQL.NET

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

Biblioteca GraphQL para C# (.NET) — GraphQL.NET



GraphQL es un lenguaje de consulta para APIs que permite a los clientes solicitar únicamente los datos que realmente necesitan. En el ecosistema .NET, una de las implementaciones más populares es la biblioteca GraphQL.NET (también conocida como graphql-dotnet). Proporciona herramientas potentes para crear APIs flexibles, tipadas y eficientes en la plataforma C# (.NET).



En este artículo, analizaremos en detalle cómo usar GraphQL.NET, exploraremos los conceptos clave y proporcionaremos ejemplos prácticos de código.



¿Qué es GraphQL.NET?



GraphQL.NET es una biblioteca de código abierto que implementa la especificación de GraphQL para la plataforma .NET. Es compatible tanto con .NET Core como con .NET Framework. Las principales características incluyen:



  • Creación de esquemas fuertemente tipados en C#.
  • Soporte para consultas (Query), mutaciones (Mutation) y suscripciones (Subscription).
  • Validación y ejecución de consultas integradas.
  • Integración con frameworks web populares (ASP.NET Core, Nancy y otros).
  • Soporte para suscripciones a través de WebSockets (SignalR).


Instalación y configuración



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



dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson  // para serialización JSON


Si utiliza ASP.NET Core, instale adicionalmente:



dotnet add package GraphQL.Server.Transports.AspNetCoredotnet add package GraphQL.Server.Ui.Playground  // interfaz de usuario integrada para pruebas


Creación del primer esquema



GraphQL se construye alrededor de un esquema que define los tipos de datos y las operaciones disponibles. Veamos un ejemplo simple: una API para obtener información sobre libros.



Paso 1. Defina el modelo de datos:



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


Paso 2. Cree los tipos GraphQL:



public class BookType : ObjectGraphType<Book>{    public BookType()    {        Field(x => x.Id).Description("Identificador del libro");        Field(x => x.Title).Description("Título del libro");        Field(x => x.Author).Description("Autor");        Field(x => x.Pages).Description("Número de páginas");    }}


Paso 3. Defina la consulta raíz (Query):



public class BookQuery : ObjectGraphType{    public BookQuery(IDataStore dataStore)    {        Field<BookType>("book")            .Arguments(new QueryArguments(new QueryArgument<StringGraphType> { Name = "id" }))            .Resolve(context => dataStore.GetBookById(context.GetArgument<string>("id")));

Field<ListGraphType<BookType>>("books") .Resolve(context => dataStore.GetAllBooks()); }}


Paso 4. Compile el esquema:



public class BookSchema : Schema{    public BookSchema(IServiceProvider provider) : base(provider)    {        Query = provider.GetRequiredService<BookQuery>();    }}


Integración con ASP.NET Core



Registre los servicios en Program.cs (o Startup.cs):



builder.Services.AddGraphQL(b => b    .AddSystemTextJson()    .AddSchema<BookSchema>()    .AddGraphTypes(typeof(BookType).Assembly));

builder.Services.AddScoped<IDataStore, InMemoryDataStore>();


Agregue el middleware:



app.UseGraphQL<BookSchema>();  // endpoint por defecto /graphqlapp.UseGraphQLPlayground();    // interfaz de usuario para pruebas (opcional)


Ejecución de una consulta



Ahora puede

Recommendations