Cómo escribir una API REST en PHP en 30 minutos: para principiantes
Crear su propia API REST es un paso importante para cualquier desarrollador web. Una API permite que su aplicación se comunique con otros servicios, aplicaciones móviles o el frontend. En este artículo, analizaremos cómo escribir una API REST simple pero completa en PHP puro en solo 30 minutos. Aprenderá cómo manejar solicitudes HTTP, trabajar con JSON y conectar una base de datos. Sin frameworks, solo PHP puro y ejemplos claros.
¿Qué es una API REST y para qué sirve?
REST (Transferencia de Estado Representacional) es un estilo arquitectónico para crear servicios web. Una API construida según los principios REST utiliza métodos HTTP estándar para trabajar con recursos:
- GET — obtener datos (por ejemplo, lista de usuarios);
- POST — crear un nuevo recurso;
- PUT — actualizar un recurso existente;
- DELETE — eliminar un recurso.
En el desarrollo web moderno, la API REST se utiliza en todas partes: desde aplicaciones móviles hasta microservicios. Al aprender a crearla en PHP, podrá integrar rápidamente sus proyectos con cualquier cliente.
Paso 1: Configuración de la estructura del proyecto
Antes de escribir código, cree una estructura de archivos simple. Para nuestra API solo necesitaremos unos pocos archivos:
index.php— punto de entrada que manejará todas las solicitudes;.htaccess— para redirigir todas las solicitudes a index.php (si usa Apache);config.php— configuración de conexión a la base de datos (opcional).
Cree el archivo .htaccess en la carpeta raíz del proyecto:
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [QSA,L]Este código redirige todas las solicitudes que no apuntan a archivos existentes a index.php. Ahora nuestra API manejará cualquier URL, por ejemplo /api/users o /api/users/1.
Paso 2: Creación del enrutador y manejo de solicitudes
Abra el archivo index.php y escriba la lógica básica de enrutamiento. Determinaremos el método HTTP y la URL, y luego llamaremos a las funciones correspondientes.
<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");header("Access-Control-Allow-Headers: Content-Type, Authorization");
$method = $_SERVER['REQUEST_METHOD'];$request = explode('/', trim($_SERVER['PATH_INFO'] ?? '/', '/'));
// Enrutador simpleswitch ($request[0] ?? '') { case 'users': handleUsers($method, $request); break; default: http_response_code(404); echo json_encode(["message" => "Route not found"]); break;}
function handleUsers($method, $request) { $id = $request[1] ?? null; switch ($method) { case 'GET': if ($id) { // Obtener un usuario echo json_encode(["message" => "Get user with id $id"]); } else { // Obtener todos los usuarios echo json_encode(["message" => "Get all users"]); } break; case 'POST': $input = json_decode(file_get_contents("php://input"), true); echo json_encode(["message" => "Create user", "data" => $input]); break; case 'PUT': if ($id) { $input = json_decode(file_get_contents("php://input"), true); echo json_encode(["message" => "Update user with id $id", "data" => $input]); } else { http_response_code(400); echo json_encode(["message" => "ID is requ