Cómo escribir una API REST en PHP en 30 minutos: guía paso a paso

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: ¿por qué necesitas una API REST en PHP?

REST API (Representational State Transfer) es un estilo arquitectónico que permite que diferentes aplicaciones se comuniquen entre sí a través de HTTP. Hoy en día, ningún servicio web moderno prescinde de una API: aplicaciones móviles, frontends SPA, integraciones con sistemas de pago — todo esto requiere una interfaz rápida y comprensible para el intercambio de datos.

PHP sigue siendo uno de los lenguajes más populares para el backend. Puedes escribir una API REST completa en PHP puro sin frameworks pesados — esto te llevará no más de 30 minutos. En este artículo, analizaremos un ejemplo práctico con operaciones CRUD (crear, leer, actualizar, eliminar) para gestionar una lista de tareas (To-Do).



1. Preparación del entorno y estructura del proyecto

Para trabajar necesitarás:

  • Un servidor local (Open Server, XAMPP, MAMP o el servidor PHP integrado)
  • PHP versión 7.4 o superior
  • Un editor de código (VS Code, PhpStorm)

Crea la carpeta raíz rest-api-php y dentro de ella los archivos:

rest-api-php/├── index.php       (punto de entrada, enrutador)├── config.php      (configuración de la base de datos)├── api/│   ├── tasks.php   (CRUD para tareas)│   └── helpers.php (funciones auxiliares)└── .htaccess       (redirección de solicitudes a index.php)


1.1. Configuración de .htaccess para URLs limpias

Para que todas las solicitudes se dirijan a un único punto de entrada, crea el archivo .htaccess en la raíz:

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php [QSA,L]

Si usas el servidor integrado de PHP, simplemente ejecútalo desde la carpeta del proyecto: php -S localhost:8000.



2. Creación del enrutador y la API base

Abre index.php — este es nuestro manejador principal. Analizará el método HTTP y la URI para llamar a las funciones necesarias.



2.1. index.php — punto de entrada

<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");

require_once 'config.php';require_once 'api/helpers.php';

$method = $_SERVER['REQUEST_METHOD'];$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);$uri = rtrim($uri, '/');

// Enrutamiento simpleif ($uri === '/api/tasks') { require_once 'api/tasks.php'; handleTasks($method);} elseif (preg_match('/^\\/api\\/tasks\\/(\\d+)$/', $uri, $matches)) { require_once 'api/tasks.php'; handleTask($method, (int)$matches[1]);} else { sendResponse(['error' => 'Endpoint not found'], 404);}?>

Manejamos dos rutas: /api/tasks (listar/crear) y /api/tasks/{id} (tarea específica).



2.2. helpers.php — funciones auxiliares

<?phpfunction sendResponse($data, $status = 200) {    http_response_code($status);    echo json_encode($data, JSON_UNESCAPED_UNICODE);    exit;}

function getJsonInput() { $input = file_get_contents('php://input'); return json_decode($input, true) ?? [];}?>


3. Trabajo con la base de datos y operaciones CRUD

Creemos una tabla simple tasks en MySQL:

CREATE TABLE tasks (    id INT AUTO_INCREMENT PRIMARY KEY,    title VARCHAR(255) NOT NULL,    status ENUM('pending', 'completed') DEFAULT 'pending',    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Archivo config.php:

<?php$host = 'localhost';$dbname = 'rest_api_db';$username = 'root';$password = '';

try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO:

Blogs

Book Recommendations