GraphQL API con C#: tutorial paso a paso para principiantes

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

Introducción a GraphQL con C#



GraphQL es un lenguaje de consulta para API, desarrollado por Facebook, que permite a los clientes solicitar solo los datos que necesitan. A diferencia de REST, donde los endpoints son fijos, GraphQL permite formar respuestas del servidor de manera flexible. En este tutorial crearemos una API GraphQL completa en C# utilizando la biblioteca Hot Chocolate, la solución más popular para .NET.



Recorreremos el camino desde la instalación hasta la implementación de consultas, mutaciones y suscripciones. Al final del artículo, podrá implementar de forma independiente un servidor GraphQL en C# e integrarlo en sus proyectos.



1. Instalación y configuración del proyecto



Para comenzar, crearemos un nuevo proyecto ASP.NET Core. Asegúrese de tener instalado el SDK de .NET (versión 6.0 o superior). Abra la terminal o línea de comandos y ejecute:



dotnet new web -n GraphQLDemocd GraphQLDemo


Ahora instale el paquete Hot Chocolate:



dotnet add package HotChocolate.AspNetCoredotnet add package HotChocolate.AspNetCore.Playground


Después de la instalación, abra el archivo Program.cs y configure el servidor:



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

var builder = WebApplication.CreateBuilder(args);

// Agregamos servicios GraphQLbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

// Conectamos el middleware GraphQLapp.MapGraphQL();

// Agregamos Playground para pruebasapp.UsePlayground();

app.Run();


Ahora crearemos una clase simple Query en un archivo separado Query.cs:



public class Query{    public string Hello() => "¡Hola, mundo GraphQL!";}


Ejecute el proyecto con el comando dotnet run y abra el navegador en http://localhost:5000/graphql. Verá la interfaz de Playground, donde puede ejecutar una consulta:



{  hello}


Respuesta: { "data": { "hello": "¡Hola, mundo GraphQL!" } }



2. Creación de tipos y consultas



GraphQL está fuertemente tipado. En C# usamos clases para definir tipos. Crearemos los modelos Book y Author:



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

public class Author{ public int Id { get; set; } public string Name { get; set; } public List<Book> Books { get; set; }}


Ahora agregaremos un almacenamiento de datos (en un proyecto real use una base de datos) y ampliaremos la clase Query:



public class Query{    private static List<Author> _authors = new()    {        new Author        {            Id = 1,            Name = "León Tolstói",            Books = new List<Book>            {                new Book { Id = 1, Title = "Guerra y paz", Author = null },                new Book { Id = 2, Title = "Ana Karénina", Author = null }            }        },        new Author        {            Id = 2,            Name = "Fiódor Dostoyevski",            Books = new List<Book>            {                new Book { Id = 3, Title = "Crimen y castigo", Author = null }            }        }    };

public List<Author> GetAuthors() => _authors;

public Author GetAuthor(int id) => _authors.FirstOrDefault(a => a.Id == id); public List<Book> GetBooks() => _authors.SelectMany(a => a.Books).ToList();}


Tenga en cuenta: no configuramos tipos explícitamente — Hot Chocolate genera automáticamente el esquema basado en las clases de C#. Ahora puede ejecutar consultas:



{  authors {    id    name    books {      title    }  }}

Blogs

Book Recommendations