Apuntes redes

No vayas a access.log, donde habitan los monstruos.

Métodos HTTP

Los métodos HTTP indican la intención de la petición del cliente al servidor. Es decir, definen la acción que se desea realizar sobre un recurso (como obtenerlo, modificarlo, eliminarlo…). Aunque HTTP tiene una lista amplia de métodos, en la práctica web se utilizan principalmente unos pocos, cada uno con un propósito bien definido.

Métodos más comunes

GET

Solicita un recurso desde el servidor sin alterar su estado. Es el método más usado, por ejemplo al cargar una página web, una imagen o un archivo CSS.

  • No lleva cuerpo en la solicitud.
  • Se considera seguro (no modifica datos).
  • Puede ser cacheado por el navegador.
  • Los parámetros suelen incluirse en la URL (?nombre=ignit&edad=42).

POST

Envía datos al servidor para procesarlos o almacenarlos. Se usa comúnmente en formularios (registro, comentarios, envío de mensajes…).

  • Sí incluye cuerpo con los datos de la solicitud.
  • No es seguro ni idempotente (una misma petición puede tener efectos distintos si se repite).
  • No se cachea por defecto.

PUT

Solicita reemplazar un recurso completo en el servidor con los datos enviados. Se utiliza para actualizaciones completas.

  • Es idempotente: si se repite con los mismos datos, el resultado es el mismo.
  • No se cachea.
  • A menudo requiere que el cliente conozca el identificador exacto del recurso.

PATCH

Similar a PUT, pero en lugar de reemplazar todo el recurso, realiza una modificación parcial.

  • También es idempotente.
  • Muy útil en APIs modernas donde se actualizan campos específicos (por ejemplo, cambiar solo el nombre de usuario).

DELETE

Indica que se desea eliminar un recurso del servidor.

  • Es idempotente: eliminar algo varias veces tiene el mismo efecto (si ya no existe, no pasa nada).
  • En muchos sistemas se combina con GET o POST para confirmar acciones antes de ejecutar la eliminación.

HEAD

Funciona igual que GET, pero la respuesta no incluye el cuerpo, solo los encabezados. Ideal para:

  • Verificar si un recurso existe.
  • Consultar metadatos (tipo MIME, longitud de contenido, fecha de última modificación…).
  • Verificar caché sin descargar el recurso completo.

Otros métodos menos comunes

  • OPTIONS: Solicita información sobre los métodos permitidos para un recurso.
  • TRACE: Devuelve lo que llega al servidor, útil para pruebas (aunque poco usado).
  • CONNECT: Para establecer túneles (como los usados en HTTPS). Se usa a nivel más bajo.

Conceptos importantes asociados

  • Seguridad: Algunos métodos están pensados para no alterar el servidor (GET, HEAD), aunque la seguridad real depende de cómo se implementa.

  • Idempotencia (idempotency.): Si una operación puede repetirse sin cambiar el resultado, es idempotente.

Una operación idempotente es aquella que, aunque se ejecute varias veces, siempre produce el mismo efecto. Esto es útil para evitar duplicaciones, errores por reintentos, o efectos no deseados.

Ejemplos:

  • GET es idempotente: pedir un recurso no cambia nada, da igual cuántas veces lo hagas.
  • DELETE es idempotente: borrar un recurso una vez, dos veces o cien veces da como resultado lo mismo: el recurso ya no está.
  • PUT es idempotente: si actualizas un recurso con los mismos datos varias veces, el resultado final es el mismo.

En cambio, POST no es idempotente. Si lo repites, podrías crear varias entradas duplicadas, enviar múltiples correos o realizar una acción más de una vez.

La idempotencia permite que los sistemas reintenten solicitudes sin miedo a generar resultados inesperados. Esto es vital en redes donde puede haber desconexiones, errores transitorios, o clientes que repiten peticiones si no reciben respuesta.

¿Cómo se usan los métodos en la práctica?

En PHP, por ejemplo, cuando procesas formularios, puedes detectar el método con:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Procesar datos del formulario
}

En APIs RESTful, el método define la acción sobre recursos. Por ejemplo:

GET /usuarios/42 → obtener el usuario con ID 42

POST /usuarios → crear un nuevo usuario

PUT /usuarios/42 → reemplazar datos del usuario 42

DELETE /usuarios/42 → eliminarlo

Este conocimiento es esencial para trabajar con servidores, entender cómo se estructuran las peticiones web y cómo los navegadores, formularios y clientes HTTP interactúan con los backends.

Método ¿Modifica datos? ¿Es idempotente? ¿Es seguro?¹ Uso común
GET No Obtener recursos (HTML, imágenes, datos…)
HEAD No Obtener solo los metadatos del recurso
POST No No Enviar datos (formularios, nuevos registros)
PUT No Reemplazar completamente un recurso
PATCH No Modificar parcialmente un recurso
DELETE No Eliminar un recurso específico
OPTIONS No Solicitar los métodos permitidos por el servidor

NOTA: “Seguro” aquí significa que no cambia el estado del servidor según definición del protocolo, no que sea seguro frente a ataques. Para eso se utiliza HTTPS y otras medidas de seguridad.

TOP