Ir al contenido principal
短.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.

Dec 17, 2025 · Lectura de aproximadamente 1 min

URL Shortening

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 (ejecutarlos varias veces produce el mismo resultado), mientras que POST no lo es (cada ejecución puede crear un recurso nuevo).

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. Puedes encontrar libros relacionados en Amazon.

Compartir en XHatena

¿Te resultó útil este artículo?

Términos relacionados

Artículos relacionados

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 debe ser idempotente. Implementar cambios de datos mediante GET es una violación de la especificación que puede provocar fallos en cachés y proxies. Para modificar datos deben usarse POST, PUT o DELETE.

Ready to create a short URL?

Shorten a URL for Free