Gestión de respuestas y errores de API
Compruebe los códigos de estado HTTP, gestione errores y analice las cargas útiles de las API.
Gestión de respuestas y errores de API es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
Comprobar el código de estado HTTP
Compruebe siempre el código de estado HTTP antes de procesar el cuerpo de la respuesta.
<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
throw new RuntimeException("API error: HTTP $statusCode");
}Analizar la respuesta JSON
Decodifique el cuerpo JSON y gestione los errores de análisis.
<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP arrayCuerpos de respuesta de error
Las API suelen devolver detalles del error en el cuerpo incluso en respuestas 4xx o 5xx. Analice y registre siempre el cuerpo cuando se produzcan errores.
<?php
if ($statusCode >= 400) {
$err = json_decode($body, true);
$msg = $err["message"] ?? "Unknown API error";
throw new RuntimeException("API $statusCode: $msg");
}Errores de transporte de cURL
Los errores de red, como un fallo de DNS o un tiempo de espera agotado, son distintos de los errores HTTP. Compruebe primero curl_errno() y después el estado HTTP.
<?php
if (curl_errno($ch)) {
throw new RuntimeException("Transport error: ".curl_error($ch));
}Envoltorio en una función auxiliar
Encapsule la configuración, ejecución y gestión de errores de cURL en una función reutilizable.
<?php
function httpGet(string $url, string $token): array {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$errno = curl_errno($ch);
curl_close($ch);
if ($errno) throw new RuntimeException(curl_strerror($errno));
if ($status >= 400) throw new RuntimeException("HTTP $status");
return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}Lógica de reintentos
Para errores transitorios, como 503 Service Unavailable o tiempos de espera agotados, implemente una espera exponencial con un límite de reintentos.
<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
try {
$data = httpGet($url, $token);
break;
} catch (RuntimeException $e) {
if ($attempt === $maxRetries - 1) throw $e;
sleep(2 ** $attempt);
}
}Cabeceras de limitación de velocidad
Muchas API incluyen cabeceras de limitación de velocidad: X-RateLimit-Remaining y X-RateLimit-Reset. Léalas para evitar alcanzar los límites.
<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response stringCaché de respuestas
Almacene en caché las respuestas de la API para evitar llamadas de red redundantes. Guarde las respuestas en Redis o APCu con un TTL que corresponda al requisito de actualización de los datos.
Registro de llamadas a la API
Registre la URL de la solicitud, el método, el código de estado y la latencia para facilitar la depuración y supervisar el estado de la API en producción.
Tiempos de espera como errores
Un tiempo de espera agotado de cURL (CURLE_OPERATION_TIMEDOUT) es un error de transporte, no un error HTTP. Gestiónelo explícitamente.
Errores de certificado SSL
Los fallos de validación del certificado (CURLE_SSL_CACERT) indican que no se confía en el certificado del servidor. Actualice su paquete de CA y nunca desactive la verificación.
Resumen
Compruebe primero el errno de cURL y después el estado HTTP. Analice los cuerpos de error. Encapsule la lógica en funciones reutilizables. Implemente reintentos para los fallos transitorios.
Comprobación rápida
¿Qué debería comprobar primero: el errno de cURL o el estado HTTP?
Preguntas frecuentes
¿La lección «Gestión de respuestas y errores de API» es gratis?
Sí — el texto completo de «Gestión de respuestas y errores de API» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Gestión de respuestas y errores de API»?
Compruebe los códigos de estado HTTP, gestione errores y analice las cargas útiles de las API. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Gestión de respuestas y errores de API»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Codificación y decodificación JSON
- Realización de solicitudes HTTP con cURL
- Gestión de respuestas y errores de API
- Construcción de un cliente de API sencillo