🔒 Día 17 — Crear una API REST básica con PHP

Objetivo:
Hoy aprenderemos a crear una API REST sencilla utilizando PHP puro, aplicando buenas prácticas de validación de entradas y medidas básicas de seguridad.


📚 Formación Teórica

1. Conceptos Básicos: ¿Qué es una API REST?

Una API REST permite que diferentes aplicaciones se comuniquen a través de peticiones HTTP estándar (GET, POST, PUT, DELETE).
Una API bien diseñada debe:

  • Validar todas las entradas.
  • Devolver respuestas claras.
  • Implementar controles de acceso básicos.
  • Minimizar la exposiciĂłn de informaciĂłn sensible.

🎥 Vídeos de hoy

Instrucciones para los vĂ­deos:
Presta especial atenciĂłn a:

  • CĂłmo manejar las diferentes rutas (GET, POST).
  • CĂłmo validar los datos entrantes.
  • CĂłmo devolver respuestas en formato JSON correctamente.

🧠 Apuntes Técnicos del Día

📌 Estructura básica de una API REST en PHP

  • Se recomienda usar un archivo PHP sencillo como «servidor» para recibir las peticiones.
  • Dependiendo del mĂ©todo (GET, POST), la API debe comportarse de forma distinta.

Esqueleto básico:

header('Content-Type: application/json');

$requestMethod = $_SERVER["REQUEST_METHOD"];

switch($requestMethod) {
    case 'GET':
        // CĂłdigo para manejar GET
        echo json_encode(["message" => "GET recibido"]);
        break;
    case 'POST':
        // CĂłdigo para manejar POST
        $data = json_decode(file_get_contents('php://input'), true);
        echo json_encode(["received" => $data]);
        break;
    default:
        http_response_code(405);
        echo json_encode(["error" => "Método no permitido"]);
}

📌 Validación de Entradas

  • Nunca confĂ­es en datos recibidos por $_POST, $_GET o php://input.
  • Valida el tipo, longitud y formato de cada dato.
  • Usa filter_var() para validar emails, nĂşmeros, etc.

Ejemplo de validaciĂłn sencilla:

if (isset($data['email']) && filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
    // Email válido
} else {
    echo json_encode(["error" => "Email no válido"]);
    exit;
}

📌 Seguridad Básica

  • Control de Acceso: añade un pequeño sistema de autenticaciĂłn (por ejemplo, validando un token enviado en la cabecera).
  • Cabeceras HTTP: siempre enviar el header 'Content-Type: application/json'.
  • Control de MĂ©todos: responde adecuadamente a mĂ©todos no permitidos (405 Method Not Allowed).

🛠️ Tareas prácticas del Día 17

Tarea 1 — Crear una API básica:

  • Crea un archivo api.php que acepte:
    • GET: devuelve un mensaje tipo «Bienvenido a mi API».
    • POST: recibe un JSON con nombre y email, valida los datos y devuelve un JSON de confirmaciĂłn.

Tarea 2 — Añadir validaciones:

  • Si el email no es válido, devuelve un error 400.
  • Si falta algĂşn campo, devuelve un error 422.

Tarea 3 — Seguridad básica:

  • Añade verificaciĂłn de un token sencillo enviado en los headers HTTP (Authorization: Bearer [token]).
  • Si el token es incorrecto, devuelve 401 Unauthorized.

Entrega:

  • Crea un documento PDF donde adjuntes:
    • CĂłdigo PHP completo de tu API.
    • Ejemplos de peticiones (GET y POST) y sus respuestas.
    • Capturas de pantalla del funcionamiento y manejo de errores.

🚀 Resultado esperado al finalizar el día

  • Saber crear una API REST funcional y segura usando PHP puro.
  • Entender la importancia de validar entradas y proteger accesos.
  • Prepararte para integrar APIs más avanzadas en WordPress en el siguiente dĂ­a.