GraphQL API com C#: tutorial passo a passo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 GraphQLDemo


Agora instale o pacote Hot Chocolate:



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


Apó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