59-3-completo

 <?php

$arrayRutas = explode("/", $_SERVER['REQUEST_URI']);
$arrayRutasFiltrado = array_filter($arrayRutas);
$countRutas = count($arrayRutasFiltrado);

if ($countRutas == 0) {

    $json = array(
        "detalle" => "no encontrado"
    );

    echo json_encode($json, true);
    return;
    
} else {

    if ($countRutas == 1) {

        if ($arrayRutasFiltrado[1] == "registro") {

            if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "POST") {

                $json = array(
                    "detalle" => "Guardar registro"
                );
                echo json_encode($json, true);
                return;
            }
        }

        if ($arrayRutasFiltrado[1] == "cursos") {

            if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "GET") {

                $json = array(
                    "detalle" => "Mostrando todos los cursos"
                );

                echo json_encode($json, true);
                return;
            }
        }

    } else if ($countRutas == 2) {

        if ($arrayRutasFiltrado[1] == "cursos" && is_numeric($arrayRutasFiltrado[2])) {

            $id = $arrayRutasFiltrado[2];

            if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "GET") {

                $json = array(
                    "detalle" => "Curso con id " . $id
                );
                echo json_encode($json, true);
                return;
            }
        }
    }
}

$json = array(
    "detalle" => "no encontrado"
);
echo json_encode($json, true);
return;

Explicación del código:

1. Procesamiento de la URL:

php
$arrayRutas = explode("/", $_SERVER['REQUEST_URI']);
$arrayRutasFiltrado = array_filter($arrayRutas);
$countRutas = count($arrayRutasFiltrado);
  • Divide la URL en partes usando "/" como separador

  • Filtra elementos vacíos

  • Cuenta cuántos segmentos válidos tiene la URL

2. Tres casos principales:

Caso 1: URL base ($countRutas == 0)

  • Ejemplo: https://midominio.com

  • Devuelve "no encontrado"

Caso 2: Una ruta ($countRutas == 1)

  • /registro + método POST: "Guardar registro"

  • /cursos + método GET: "Mostrando todos los cursos"

Caso 3: Dos rutas ($countRutas == 2)

  • /cursos/2 + método GET: "Curso con id 2"

  • Solo funciona si el segundo segmento es numérico

3. Flujo del código:

  • Verifica el número de segmentos en la URL

  • Valida la ruta específica y el método HTTP

  • Devuelve respuestas JSON apropiadas

  • Si no coincide nada, devuelve "no encontrado"

El código maneja una API REST básica con endpoints para registro y cursos, diferenciando entre listar todos los cursos y obtener un curso específico por ID.


Comentarios