Api-60-2

 <?php


// Procesar la URL
$rutas = array_filter(explode("/", $_SERVER['REQUEST_URI']));
$numRutas = count($rutas);

// Manejar caso de ruta vacía
if ($numRutas == 0) {
    $json = ["detalle" => "no encontrado"];
    echo json_encode($json, true);
    return;
}

// Obtener método HTTP
$metodo = $_SERVER["REQUEST_METHOD"];

// Manejar rutas con un segmento
if ($numRutas == 1) {
    $recurso = $rutas[1];
    
    if ($recurso == "registro" && $metodo == "POST") {
        $json = ["detalle" => "Guardar registro"];
        echo json_encode($json, true);
        return;
    }
    
    if ($recurso == "cursos" && $metodo == "GET") {
        $json = ["detalle" => "Mostrando todos los cursos"];
        echo json_encode($json, true);
        return;
    }
}

// Manejar rutas con dos segmentos
if ($numRutas == 2) {
    $recurso = $rutas[1];
    $id = $rutas[2];
    
    if ($recurso == "cursos" && is_numeric($id) && $metodo == "GET") {
        $json = ["detalle" => "Curso con id " . $id];
        echo json_encode($json, true);
        return;
    }
}

// Si no coincide ninguna ruta
$json = ["detalle" => "no encontrado"];
echo json_encode($json, true);

Mejoras aplicadas:

  1. ✅ Más legible: Menos anidación de condicionales

  2. ✅ Variables con nombres más descriptivos$rutas$numRutas$recurso

  3. ✅ Código más compacto: Eliminación de comentarios redundantes

  4. ✅ Lógica simplificada: Agrupación de condiciones relacionadas

  5. ✅ Manejo de caso final: Si no coincide ninguna ruta, devuelve "no encontrado"

  6. ✅ Sintaxis moderna: Uso de [] en lugar de array() para arrays



Claro, aquí tienes el código con la estructura idéntica pero más organizado:

php
<?php

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

if ($countRutas == 0) {

	/*======================================
	Cuando no se hace ninguna petición a la API
	==================================*/
	$json = array(
		"detalle" => "no encontrado"
	);
	echo json_encode($json, true);
	return;
	
} else {

            /*=======================================
          Cuando pasamos solo un índice en el array $arrayRutas
           ====================================*/
	if ($countRutas == 1) {
                       /*====================================
                      Cuando se hace peticiones desde registro
                       ===============================*/
		if ($arrayRutasFiltrado[1] == "registro") {
                                /*======================================
                                Peticiones POST
                                =====================================*/
		if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "POST") {

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

                       /*============================================
		Cuando se hace peticiones desde cursos
                       ========================================*/
		if ($arrayRutasFiltrado[1] == "cursos") {
                                   /*==========================================
				Peticiones GET
                                   ==========================================*/
		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) {
                      /*=============================
		Cuando se hace peticiones desde un solo curso
                       =================================*/
		if ($arrayRutasFiltrado[1] == "cursos" && is_numeric($arrayRutasFiltrado[2])) {
			$id = $arrayRutasFiltrado[2];
                                   /*=============================
                                   Peticiones GET
                                  =============================*/
			if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "GET") {
				$json = array(
					"detalle" => "Curso con id " . $id
				);
				echo json_encode($json, true);
				return;
			}
		}
	}
}

/*============================================
Si no coincide ninguna ruta válida
============================================*/

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

Mantiene exactamente la misma estructura pero con:

  • ✅ Mejor espaciado y formato

  • ✅ Comentarios consistentes

  • ✅ Manejo de caso final para rutas no válidas

  • ✅ Misma lógica y flujo original

  • ✅ Mismos nombres de variables

  • ✅ Mismo estilo de codificación

La funcionalidad es idéntica pero el código está mejor organizado visualmente.

Comentarios

Entradas más populares de este blog

60. Construcción de Controladores

Te ayudo a crear una API muy sencilla en PHP utilizando esos datos