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

 Te ayudo a crear una API muy sencilla en PHP utilizando esos datos. Aquí tienes la implementación completa:

Archivo: api.php

php
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

// Datos de usuarios
$usuarios = [
    [
        "id" => 1,
        "nombre" => "Ana García",
        "fecha_registro" => "2024-01-15"
    ],
    [
        "id" => 2,
        "nombre" => "Carlos López",
        "fecha_registro" => "2023-11-20"
    ],
    [
        "id" => 3,
        "nombre" => "María Rodríguez",
        "fecha_registro" => "2024-03-05"
    ]
];

// Obtener método de la solicitud
$method = $_SERVER['REQUEST_METHOD'];

// Manejar solicitud OPTIONS (preflight)
if ($method === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Obtener ID de la URL si existe
$url_parts = explode('/', $_SERVER['REQUEST_URI']);
$id = isset($url_parts[2]) ? intval($url_parts[2]) : null;

// Procesar la solicitud según el método
switch ($method) {
    case 'GET':
        handleGet($usuarios, $id);
        break;
    case 'POST':
        handlePost($usuarios);
        break;
    case 'PUT':
        handlePut($usuarios, $id);
        break;
    case 'DELETE':
        handleDelete($usuarios, $id);
        break;
    default:
        http_response_code(405);
        echo json_encode(["error" => "Método no permitido"]);
        break;
}

// Función para manejar GET
function handleGet($usuarios, $id) {
    if ($id) {
        // Buscar usuario por ID
        $usuario = null;
        foreach ($usuarios as $u) {
            if ($u['id'] === $id) {
                $usuario = $u;
                break;
            }
        }
        
        if ($usuario) {
            echo json_encode($usuario);
        } else {
            http_response_code(404);
            echo json_encode(["error" => "Usuario no encontrado"]);
        }
    } else {
        // Devolver todos los usuarios
        echo json_encode($usuarios);
    }
}

// Función para manejar POST
function handlePost(&$usuarios) {
    $input = json_decode(file_get_contents('php://input'), true);
    
    if (isset($input['nombre']) && isset($input['fecha_registro'])) {
        $nuevoId = max(array_column($usuarios, 'id')) + 1;
        
        $nuevoUsuario = [
            "id" => $nuevoId,
            "nombre" => $input['nombre'],
            "fecha_registro" => $input['fecha_registro']
        ];
        
        $usuarios[] = $nuevoUsuario;
        
        http_response_code(201);
        echo json_encode($nuevoUsuario);
    } else {
        http_response_code(400);
        echo json_encode(["error" => "Datos incompletos"]);
    }
}

// Función para manejar PUT
function handlePut(&$usuarios, $id) {
    if (!$id) {
        http_response_code(400);
        echo json_encode(["error" => "ID requerido"]);
        return;
    }
    
    $input = json_decode(file_get_contents('php://input'), true);
    $usuarioIndex = null;
    
    foreach ($usuarios as $index => $usuario) {
        if ($usuario['id'] === $id) {
            $usuarioIndex = $index;
            break;
        }
    }
    
    if ($usuarioIndex === null) {
        http_response_code(404);
        echo json_encode(["error" => "Usuario no encontrado"]);
        return;
    }
    
    // Actualizar campos
    if (isset($input['nombre'])) {
        $usuarios[$usuarioIndex]['nombre'] = $input['nombre'];
    }
    if (isset($input['fecha_registro'])) {
        $usuarios[$usuarioIndex]['fecha_registro'] = $input['fecha_registro'];
    }
    
    echo json_encode($usuarios[$usuarioIndex]);
}

// Función para manejar DELETE
function handleDelete(&$usuarios, $id) {
    if (!$id) {
        http_response_code(400);
        echo json_encode(["error" => "ID requerido"]);
        return;
    }
    
    $usuarioIndex = null;
    foreach ($usuarios as $index => $usuario) {
        if ($usuario['id'] === $id) {
            $usuarioIndex = $index;
            break;
        }
    }
    
    if ($usuarioIndex === null) {
        http_response_code(404);
        echo json_encode(["error" => "Usuario no encontrado"]);
        return;
    }
    
    // Eliminar usuario
    $usuarioEliminado = $usuarios[$usuarioIndex];
    array_splice($usuarios, $usuarioIndex, 1);
    
    echo json_encode(["message" => "Usuario eliminado", "usuario" => $usuarioEliminado]);
}
?>

Archivo: .htaccess (opcional, para URLs amigables)

apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php [QSA,L]

Cómo usar la API:

1. Obtener todos los usuarios:

bash
GET http://tudominio.com/api.php

2. Obtener un usuario específico:

bash
GET http://tudominio.com/api.php/1

3. Crear un nuevo usuario:

bash
POST http://tudominio.com/api.php
Content-Type: application/json

{
    "nombre": "Juan Pérez",
    "fecha_registro": "2024-05-20"
}

4. Actualizar un usuario:

bash
PUT http://tudominio.com/api.php/1
Content-Type: application/json

{
    "nombre": "Ana García Modificado",
    "fecha_registro": "2024-01-16"
}

5. Eliminar un usuario:

bash
DELETE http://tudominio.com/api.php/1

Características de la API:

  • ✅ RESTful: Soporta GET, POST, PUT, DELETE

  • ✅ CORS habilitado: Puede ser consumida desde cualquier dominio

  • ✅ JSON: Todas las respuestas en formato JSON

  • ✅ Códigos de estado HTTP: Respuestas apropiadas (200, 201, 400, 404, 405)

  • ✅ Validación básica: Verifica datos requeridos

  • ✅ Muy simple: Sin bases de datos ni dependencias externas

¡La API está lista para usar! Solo guarda el código en un archivo api.php y accede a través de HTTP

Comentarios

Entradas más populares de este blog

60. Construcción de Controladores

Api-60-2