Ir al contenido principal
miji.be

Idempotencia

Propiedad por la cual una operación produce el mismo resultado sin importar cuántas veces se ejecute. Fundamental en el diseño de APIs para gestionar reintentos de forma segura.

25 ago 2026 / Lectura de aproximadamente 1 min

Acortamiento de URL

La idempotencia (Idempotency) es la propiedad de una operación que garantiza que ejecutarla una o varias veces produce exactamente el mismo resultado. En matemáticas se expresa como f(f(x)) = f(x). En el diseño de APIs web, es un concepto clave para evitar procesamientos duplicados cuando se producen reintentos por fallos de red o timeouts.

La especificación HTTP define la idempotencia de cada método: GET, PUT y DELETE son idempotentes, mientras que POST no lo es (cada ejecución puede crear un recurso nuevo). Idempotente significa aquí que el efecto que varias peticiones idénticas producen en el servidor es el mismo que el de una sola. Las respuestas no tienen que coincidir: un primer DELETE suele devolver 200 y los siguientes, 404 porque el recurso ya no existe, y eso no rompe la idempotencia.

En la API de un acortador de URL, la idempotencia es una cuestión central. Si se envía dos veces la misma petición para acortar una URL, ¿deben generarse dos URLs cortas distintas o debe devolverse la misma? En un diseño idempotente, la misma entrada siempre devuelve la misma URL acortada. Así, si un reintento se produce por un error de red, no se crean duplicados.

La técnica más habitual para implementar idempotencia es el uso de una Idempotency Key (clave de idempotencia). El cliente incluye en la petición un identificador único (por ejemplo, un UUID) y el servidor almacena en caché el resultado asociado a esa clave. Si llega otra petición con la misma clave, el servidor devuelve el resultado cacheado sin volver a procesar la operación. La API de pagos de Stripe es un ejemplo paradigmático de esta técnica.

En un acortador de URL, la idempotencia se combina con la normalización de URLs. Se normaliza la URL de entrada, se calcula su hash y se devuelve siempre el mismo código corto para el mismo hash. De este modo, "https://example.com/page" y "https://example.com/page/" se mapean a la misma URL acortada.

¿Te resultó útil este artículo?

Términos relacionados

Arquitectura de un acortador de URL

Diseño interno de un servicio de acortamiento de URL, que abarca la generación de identificadores, el diseño de la base de datos, la estrategia de caché y el procesamiento de redirecciones.

API key

Cadena de texto que autentica y controla el acceso a una API. Se utiliza para identificar al usuario y limitar el uso.

Límite de tasa de API

Una restricción sobre el número de solicitudes de API que un cliente puede realizar dentro de un período de tiempo especificado.

Codificación Base62

Esquema de codificación que representa datos con 62 caracteres alfanuméricos (a-z, A-Z, 0-9). Muy usado para generar los códigos de las URLs cortas, produce con eficiencia cadenas breves y seguras para URLs.

Normalización de URL

Proceso de convertir múltiples URL con distinta notación pero que apuntan al mismo recurso a un formato estándar unificado. Esencial para prevenir contenido duplicado.

Redirección 307

Una redirección HTTP temporal que preserva el método de solicitud original, asegurando que las solicitudes POST no se conviertan en GET.

Artículos relacionados

Guía de API de acortadores de URL - Generación programática de URLs cortas

Una guía práctica para usar APIs de acortadores de URL. Aprende sobre formatos de solicitud, estructuras de respuesta, autenticación y patrones de implementación.

Cómo funcionan los acortadores de URL - El lado técnico de las redirecciones

Descubre la mecánica técnica detrás del acortamiento de URLs: generación de hash, consultas a bases de datos, redirecciones HTTP y más. Incluye ejemplos de respuestas HTTP y cálculos de codificación base-62.

Cómo acortar las largas URL de GitHub para optimizar tu flujo de trabajo de desarrollo

Gestiona con URL acortadas las largas URL de Issues, PRs y archivos en GitHub. Uso en READMEs, notificaciones CI/CD y alternativas tras el cierre de git.io.

Preguntas frecuentes

¿Por qué es necesaria la idempotencia en una API?
Cuando una petición falla por un problema de red o un timeout, el cliente reintenta. Sin idempotencia, el reintento puede provocar procesamientos duplicados (doble cobro, doble registro, etc.). Con idempotencia, reintentar es seguro porque el resultado no cambia.
¿Cómo se implementa una Idempotency Key?
El cliente envía un UUID en la cabecera de la petición (por ejemplo, Idempotency-Key: 550e8400-...) y el servidor almacena el resultado en una caché como Redis asociado a esa clave. Si llega otra petición con la misma clave, se devuelve el resultado cacheado sin reprocesar.
¿Las peticiones GET son siempre idempotentes?
Según la especificación HTTP, GET no solo es idempotente, sino también seguro (safe), es decir, tiene semántica de solo lectura. El servidor sí puede actualizar registros de acceso o estadísticas; lo esencial es que el cliente que envía un GET no está pidiendo ningún cambio de estado. La precarga del navegador, los rastreadores y las cachés envían peticiones GET partiendo de esa premisa, de modo que si un GET modifica datos, esos cambios se producirán en momentos que nadie ha previsto. Para modificar el estado deben usarse POST, PUT o DELETE.

Pon los términos en práctica

Acorta una URL gratis