GraphQL API com C#: tutorial prático passo a passo

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

GraphQL API com C#: tutorial prático passo a passo



No desenvolvimento web moderno, GraphQL está se tornando uma alternativa cada vez mais popular ao REST API. Ao contrário do REST, onde cada endpoint retorna uma estrutura de dados fixa, o GraphQL permite que o cliente solicite exatamente os dados de que precisa. Neste tutorial, criaremos uma API GraphQL completa em C# (.NET) usando a biblioteca Hot Chocolate. Você aprenderá como configurar o servidor, definir tipos de dados, implementar consultas e mutações, além de adicionar assinaturas para atualizações em tempo real.



O que é GraphQL e por que usá-lo com C#?



GraphQL é uma linguagem de consulta para APIs, desenvolvida pelo Facebook. Principais vantagens:

  • Flexibilidade de consultas — o cliente decide quais campos obter
  • Ponto de entrada único — um endpoint para todas as consultas
  • Tipagem forte — todos os tipos de dados são estritamente definidos
  • Sem over-fetching e under-fetching — você obtém exatamente o que solicitou

No ecossistema .NET, a melhor biblioteca para implementar GraphQL é o Hot Chocolate. Ela suporta todos os recursos da especificação GraphQL, incluindo queries, mutations e subscriptions.



Preparação do projeto e instalação de dependências



Vamos começar criando um novo projeto ASP.NET Core. Abra o terminal ou prompt de comando e execute:

dotnet new webapi -n GraphQLDemocd GraphQLDemo


Agora instale o pacote Hot Chocolate:

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


Crie um modelo de dados para nossa API. Suponha que trabalharemos com livros e autores. Crie a pasta Models e adicione as classes:



// Models/Author.cspublic class Author{    public int Id { get; set; }    public string Name { get; set; }    public ICollection<Book> Books { get; set; }}

// Models/Book.cspublic class Book{ public int Id { get; set; } public string Title { get; set; } public int AuthorId { get; set; } public Author Author { get; set; }}


Criação do esquema GraphQL e resolvers



No GraphQL, os componentes principais são tipos, queries e mutations. Crie a pasta GraphQL e adicione os arquivos:



// GraphQL/Query.cspublic class Query{    public IQueryable<Book> GetBooks([Service] ApplicationDbContext context)    {        return context.Books.Include(b => b.Author);    }

public Book GetBook(int id, [Service] ApplicationDbContext context) { return context.Books.Include(b => b.Author).FirstOrDefault(b => b.Id == id); }

public IQueryable<Author> GetAuthors([Service] ApplicationDbContext context) { return context.Authors.Include(a => a.Books); }}

// GraphQL/Mutation.cspublic class Mutation{ public async Task<Book> AddBook(string title, int authorId, [Service] ApplicationDbContext context) { var book = new Book { Title = title, AuthorId = authorId }; context.Books.Add(book); await context.SaveChangesAsync(); return book; }

public async Task<Author> AddAuthor(string name, [Service] ApplicationDbContext context) { var author = new Author { Name = name }; context.Authors.Add(author); await context.SaveChangesAsync(); return author; }}


Agora registre essas classes no Program.cs:



// Program.csvar builder = WebApplication.CreateBuilder(args);

builder.Services .AddDbContext<ApplicationDbContext>(options => options.U

Blogs

Book Recommendations