59. Construcción de Rutas
Construyendo Rutas en una API REST con PHP Nativo
En esta clase, aprenderemos a crear las rutas de nuestra API REST en PHP puro. ¡Manos a la obra!
🔹 Problema inicial:
Al ingresar a la raíz de la API (/), aparece un mensaje genérico ("Hola, soy el archivo rutas"). Pero queremos mostrar un JSON estándar, como en otros frameworks:
echo json_encode(["detalle" => "no encontrado"]);✅ Solución: Validamos la ruta raíz y devolvemos la respuesta en formato JSON.
🛠️ Configurando Rutas Dinámicas
Objetivo: Evitar crear carpetas físicas (como /registro o /cursos) y manejar todo mediante el enrutamiento.
🔧 Paso clave: Usar el archivo .htaccess para reescribir URLs:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]Esto redirige todas las peticiones a index.php, donde procesamos la ruta con PHP.
📡 Capturando Rutas con PHP
Usamos $_SERVER['REQUEST_URI'] para obtener la URL solicitada y la dividimos en segmentos:
$rutas = explode("/", $_SERVER['REQUEST_URI']);
$rutas = array_filter($rutas);Ejemplo de lógica para manejar rutas:
if (count($rutas) == 0) {
echo json_encode(["detalle" => "no encontrado"]);
} elseif ($rutas[1] == "registro") {
echo json_encode(["mensaje" => "Estoy en registro"]);
} elseif ($rutas[1] == "cursos" && !isset($rutas[2])) {
echo json_encode(["mensaje" => "Lista de cursos"]);
} elseif ($rutas[1] == "cursos" && is_numeric($rutas[2])) {
echo json_encode(["mensaje" => "Curso ID: " . $rutas[2]]);
}🔍 Resultados:
/→{"detalle":"no encontrado"}/registro→{"mensaje":"Estoy en registro"}/cursos→{"mensaje":"Lista de cursos"}/cursos/5→{"mensaje":"Curso ID: 5"}
💡 Conclusión: Con PHP nativo y .htaccess, podemos crear un enrutamiento limpio y escalable, similar a los frameworks modernos.
¿Quieres ver el código completo? ¡Déjalo en los comentarios! 👇 #PHP #APIREST #BackendDev+
$arrayRutas = explode("/", $_SERVER['REQUEST_URI']);
if(count(array_filter($arrayRutas)) == 0){
/*==============================================================
Cuando no se hace ninguna petición a la API
---*/
$json = array(
"detalle"=>"no encontrado"
);
echo json_encode($json, true);
}
else{
if(array_filter($arrayRutas)[1] == "registro"){
$json = array(
"detalle"=>"estoy en registro"
);
echo json_encode($json, true);
}if(array_filter($arrayRutas)[1] == "cursos"){
$json = array(
"detalle"=>"estoy en cursos"
);
echo json_encode($json, true);
}
}Explicación del Código
Este código PHP parece ser parte de un sistema de enrutamiento básico para una API. Aquí está el análisis:
División de la URL:
explode("/", $_SERVER['REQUEST_URI']) divide la URL solicitada en partes usando "/" como delimitador.
Por ejemplo, si la URL es api.com/registro, $arrayRutas contendrá ["", "registro"].
Comprobación de ruta vacía:
array_filter($arrayRutas) elimina elementos vacíos del array.
Si no hay rutas después del filtrado (count == 0), devuelve un JSON con mensaje "no encontrado".
Manejo de ruta "/registro":
Si el segundo elemento del array filtrado es "registro", devuelve un JSON con mensaje "estoy en registro".
Nota: Hay un error tipográfico en "no encontrado" (dice "no encontrado").
Comentarios
Publicar un comentario