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:

php
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:

apache
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:

php
$rutas = explode("/", $_SERVER['REQUEST_URI']);
$rutas = array_filter($rutas);

Ejemplo de lógica para manejar rutas:

php
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:

  1. 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"].

  2. 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".

  3. 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

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API