API GraphQL con PHP: 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 y PHP

GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución para ejecutar esas consultas con datos existentes. A diferencia de REST, donde obtienes una estructura de respuesta fija, GraphQL permite al cliente solicitar solo los datos que realmente necesita. Esto hace que la API sea más flexible y eficiente.

En este tutorial crearemos una API GraphQL simple en PHP desde cero. Aprenderás cómo instalar las bibliotecas necesarias, definir el esquema, escribir resolvers y procesar consultas. El artículo está dirigido a desarrolladores principiantes familiarizados con los fundamentos de PHP y bases de datos (por ejemplo, MySQL o SQLite).

Usaremos la biblioteca webonyx/graphql-php — es el paquete más popular y estable para implementar GraphQL en PHP. Al final, podrás ejecutar tu propio servidor GraphQL y realizar consultas a través de cualquier cliente HTTP (por ejemplo, cURL o Insomnia).



Instalación y configuración del proyecto

Paso 1: Creación del proyecto e instalación de dependencias

Primero, crea un nuevo directorio para el proyecto e inicializa Composer:

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

Luego, instala la biblioteca webonyx/graphql-php:

composer require webonyx/graphql-php

También necesitaremos un servidor HTTP compatible con PSR-7. Para simplificar, usaremos el servidor PHP integrado y la biblioteca guzzlehttp/psr7 para trabajar con solicitudes y respuestas:

composer require guzzlehttp/psr7


Paso 2: Estructura del proyecto

Crea la siguiente estructura de archivos:

  • index.php — punto de entrada de la aplicación
  • schema.graphql — archivo con la definición del esquema GraphQL
  • resolvers.php — archivo con las funciones resolver
  • data.php — simulación de base de datos (array con datos)


Definición del esquema GraphQL

Paso 3: Escritura del esquema

El esquema es la descripción de los tipos de datos y las operaciones disponibles (consultas y mutaciones). Crearemos un esquema simple para gestionar una lista de libros. Abre el archivo schema.graphql e inserta el siguiente 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}

Aquí hemos definido:

  • Book — tipo de datos con los campos id, title, author y year.
  • Query — operaciones para obtener datos: lista de todos los libros y libro por ID.
  • Mutation — operaciones para modificar datos: agregar y eliminar un libro.


Paso 4: Preparación de datos y resolvers

Crea el archivo data.php con un array de libros:

<?php$books = [    1 => ['id' => 1, 'title' => 'Guerra y Paz', 'author' => 'León Tolstói', 'year' => 1869],    2 => ['id' => 2, 'title' => 'Crimen y Castigo', 'author' => 'Fiódor Dostoyevski', 'year' => 1866],];

Ahora escribimos los resolvers en el archivo resolvers.php. Los resolvers son funciones que devuelven datos para cada campo del esquema.

<?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