GraphQL API com PHP: 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 e PHP

GraphQL é uma linguagem de consulta para APIs e um ambiente de execução para executar essas consultas com dados existentes. Diferente do REST, onde você obtém uma estrutura de resposta fixa, o GraphQL permite que o cliente solicite apenas os dados que realmente precisa. Isso torna a API mais flexível e eficiente.

Neste tutorial, criaremos uma GraphQL API simples em PHP do zero. Você aprenderá como instalar as bibliotecas necessárias, definir o schema, escrever resolvers e processar consultas. O artigo é voltado para desenvolvedores iniciantes familiarizados com o básico de PHP e bancos de dados (por exemplo, MySQL ou SQLite).

Usaremos a biblioteca webonyx/graphql-php — o pacote mais popular e estável para implementar GraphQL em PHP. Ao final, você poderá executar seu próprio servidor GraphQL e fazer consultas a ele através de qualquer cliente HTTP (por exemplo, cURL ou Insomnia).



Instalação e configuração do projeto

Passo 1: Criando o projeto e instalando dependências

Para começar, crie um novo diretório para o projeto e inicialize o Composer:

mkdir graphql-php-tutorialcd graphql-php-tutorialcomposer init

Em seguida, instale a biblioteca webonyx/graphql-php:

composer require webonyx/graphql-php

Também precisaremos de um servidor HTTP compatível com PSR-7. Para simplificar, usaremos o servidor PHP embutido e a biblioteca guzzlehttp/psr7 para trabalhar com requisições e respostas:

composer require guzzlehttp/psr7


Passo 2: Estrutura do projeto

Crie a seguinte estrutura de arquivos:

  • index.php — ponto de entrada da aplicação
  • schema.graphql — arquivo com a definição do schema GraphQL
  • resolvers.php — arquivo com funções resolvers
  • data.php — simulação de banco de dados (array com dados)


Definição do schema GraphQL

Passo 3: Escrevendo o schema

O schema é a descrição dos tipos de dados e operações disponíveis (consultas e mutações). Vamos criar um schema simples para gerenciar uma lista de livros. Abra o arquivo schema.graphql e insira o seguinte código:

type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { books: [Book] book(id: ID!): Book}

type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book}

Aqui definimos:

  • Book — tipo de dados com campos id, title, author e year.
  • Query — operações para obter dados: lista de todos os livros e livro por ID.
  • Mutation — operações para modificar dados: adicionar e remover livro.


Passo 4: Preparando dados e resolvers

Crie o arquivo data.php com um array de livros:

<?php$books = [    1 => ['id' => 1, 'title' => 'Guerra e Paz', 'author' => 'Liev Tolstói', 'year' => 1869],    2 => ['id' => 2, 'title' => 'Crime e Castigo', 'author' => 'Fiódor Dostoiévski', 'year' => 1866],];

Agora escreva os resolvers no arquivo resolvers.php. Resolvers são funções que retornam dados para cada campo do schema.

<?phprequire 'data.php';

function resolveBooks() { global $books; return array_values($books);}

function resolveBook($root, $args) { global $books; return $books[$args['id']] ?? null;}

function resolveAddBook($root, $args) { global $books; $newId = count($books) + 1; $newBook = [ 'id' => $newId, 'title' => $args['title'], 'author' => $args['author'], 'year' => $args['year'] ?? null ]; $books[$newId] = $newBook; return $newBook;}

function resolveDeleteBook($root, $args) { global $books;

Blogs

Book Recommendations