Introdução ao GraphQL com C#
GraphQL é uma linguagem de consulta para APIs, desenvolvida pelo Facebook, que permite aos clientes solicitar apenas os dados de que precisam. Ao contrário do REST, onde os endpoints são fixos, o GraphQL permite formar respostas do servidor de forma flexível. Neste tutorial, criaremos uma API GraphQL completa em C# usando a biblioteca Hot Chocolate — a solução mais popular para .NET.
Percorreremos o caminho desde a instalação até a implementação de consultas, mutações e assinaturas. Ao final do artigo, você será capaz de implantar seu próprio servidor GraphQL em C# e integrá-lo aos seus projetos.
1. Instalação e configuração do projeto
Para começar, vamos criar um novo projeto ASP.NET Core. Certifique-se de ter o .NET SDK instalado (versão 6.0 ou superior). Abra o terminal ou prompt de comando e execute:
dotnet new web -n GraphQLDemocd GraphQLDemoAgora instale o pacote Hot Chocolate:
dotnet add package HotChocolate.AspNetCoredotnet add package HotChocolate.AspNetCore.PlaygroundApós a instalação, abra o arquivo Program.cs e configure o servidor:
using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
// Adiciona serviços GraphQLbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();
var app = builder.Build();
// Conecta o middleware GraphQLapp.MapGraphQL();
// Adiciona Playground para testesapp.UsePlayground();
app.Run();Agora crie uma classe simples Query em um arquivo separado Query.cs:
public class Query{ public string Hello() => "Olá, mundo GraphQL!";}Execute o projeto com o comando dotnet run e abra o navegador em http://localhost:5000/graphql. Você verá a interface Playground, onde pode executar uma consulta:
{ hello}Resposta: { "data": { "hello": "Olá, mundo GraphQL!" } }
2. Criação de tipos e consultas
GraphQL é fortemente tipado. Em C#, usamos classes para definir tipos. Vamos criar os modelos Book e 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; }}Agora adicione um armazenamento de dados (em um projeto real, use um banco de dados) e expanda a classe Query:
public class Query{ private static List<Author> _authors = new() { new Author { Id = 1, Name = "Liev Tolstói", Books = new List<Book> { new Book { Id = 1, Title = "Guerra e Paz", Author = null }, new Book { Id = 2, Title = "Anna Karenina", Author = null } } }, new Author { Id = 2, Name = "Fiódor Dostoiévski", Books = new List<Book> { new Book { Id = 3, Title = "Crime e 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();}Observe: não configuramos tipos explicitamente — o Hot Chocolate gera automaticamente o esquema com base nas classes C#. Agora você pode executar consultas:
{ authors { id name books { title } }}Blogs
Book Recommendations
Leia também
Salários de desenvolvedores Swift na Rússia: panorama do mercado 2025
Implantação de C# no Kubernetes: guia básico para desenvolvedores
Testes em PHP: Unit, Integration, E2E em nível avançado
Go em 2025: Roadmap completo para desenvolvedor do iniciante ao profissional
Documentação em C#: como escrever código que fala por si só