";
echo "
🔗 $endpoint - $description
";
$api_url = 'api/' . $endpoint;
// Verificar que el archivo existe
if (!file_exists($api_url)) {
echo "
❌ Archivo no encontrado: $api_url
";
continue;
}
echo "
✅ Archivo existe
";
// Intentar ejecutar el endpoint usando output buffering
ob_start();
try {
// Simular REQUEST_METHOD para endpoints que lo requieran
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_HOST'] ?? 'localhost';
// Capturar cualquier error
$error_before = error_get_last();
// Incluir el archivo de la API
include $api_url;
// Obtener la salida
$output = ob_get_contents();
// Verificar errores
$error_after = error_get_last();
if ($error_after && $error_after !== $error_before) {
echo "
❌ Error PHP: " . htmlspecialchars($error_after['message']) . "
";
echo "
Línea: " . $error_after['line'] . " en " . basename($error_after['file']) . "
";
} else {
// Verificar si la salida parece ser JSON válido
if (!empty($output)) {
$json_data = json_decode($output, true);
if (json_last_error() === JSON_ERROR_NONE) {
echo "
✅ Respuesta JSON válida (" . strlen($output) . " caracteres)
";
// Mostrar estructura básica
if (is_array($json_data)) {
$keys = array_keys($json_data);
$preview_keys = array_slice($keys, 0, 3);
echo "
📋 Claves: " . implode(', ', $preview_keys);
if (count($keys) > 3) echo " (+" . (count($keys) - 3) . " más)";
echo "
";
}
} else {
echo "
⚠️ Salida no es JSON válido
";
if (strlen($output) < 200) {
echo "
Salida: " . htmlspecialchars(substr($output, 0, 100)) . "
";
}
}
} else {
echo "
⚠️ Sin salida
";
}
}
} catch (ParseError $e) {
echo "
❌ Error de sintaxis: " . htmlspecialchars($e->getMessage()) . "
";
echo "
Línea: " . $e->getLine() . "
";
} catch (Error $e) {
echo "
❌ Error fatal: " . htmlspecialchars($e->getMessage()) . "
";
echo "
Archivo: " . basename($e->getFile()) . " línea " . $e->getLine() . "
";
} catch (Exception $e) {
echo "
❌ Excepción: " . htmlspecialchars($e->getMessage()) . "
";
} finally {
ob_end_clean();
}
echo "