Código de Estado 300: Múltiples Opciones Explicado

INEZA Felin-Michel

INEZA Felin-Michel

19 September 2025

Código de Estado 300: Múltiples Opciones Explicado

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Haces clic en un enlace y, en lugar de ser llevado a una nueva página, ves algo extraño: una página del servidor que enumera varias opciones diferentes sobre a dónde podrías ir a continuación. Podría ser una lista de diferentes formatos de archivo para un documento o diferentes versiones de idioma de un sitio web. Tú, el usuario, tienes la opción de elegir.

Este comportamiento inusual es el propósito previsto de uno de los códigos de estado más ambiguos y menos comprendidos de HTTP: 300 Multiple Choices (300 Múltiples Opciones).

Pero, ¿alguna vez te has encontrado con el 300 Multiple Choices?

A primera vista, suena vago, como si el servidor no pudiera decidirse. Y en cierto modo, ¡eso es algo cierto! El código de estado 300 Multiple Choices se utiliza cuando hay más de un recurso posible disponible para la solicitud de un cliente. En lugar de simplemente elegir uno, el servidor le dice al cliente:

"Oye, hay múltiples respuestas válidas. Necesitas elegir cuál quieres."

A diferencia de sus primos de redirección decisivos 301 Moved Permanently (301 Movido Permanentemente) y 302 Found (302 Encontrado), que le dicen al navegador exactamente a dónde ir, el código 300 es más una sugerencia. Es la forma en que el servidor dice: "Tengo varias representaciones diferentes de lo que pediste. No estoy seguro de cuál quieres, así que te dejaré a ti, o a tu navegador, elegir."

Es el equivalente digital de pedir indicaciones y que te entreguen un mapa con varias rutas potenciales resaltadas en lugar de que te señalen un único camino.

Si eres un desarrollador o un usuario web curioso, comprender este código es una inmersión fascinante en un camino menos transitado de cómo la web podría haber funcionado.

En esta publicación de blog completa, explicaremos qué significa el código de estado 300 Multiple Choices, por qué y cuándo se usa, cómo afecta la comunicación cliente-servidor y cómo tú, como desarrollador, puedes manejarlo de manera efectiva. Si quieres simular y probar códigos de estado inusuales como el 300 Multiple Choices, no necesitas configurar un servidor personalizado desde cero. Puedes usar Apidog, una plataforma todo en uno para diseño de API, simulación, pruebas, depuración y documentación. Con Apidog, puedes simular una respuesta 300 Multiple Choices y ver cómo reacciona tu aplicación, dándote un mejor control sobre el comportamiento de tu API. ¿Y la mejor parte? Puedes descargarlo gratis.

button

Ahora, exploremos todo lo que necesitas saber sobre el código de estado HTTP 300 Multiple Choices.

¿Qué es el código de estado HTTP 300 Multiple Choices?

El código de estado 300 Multiple Choices es parte de la clase de códigos de respuesta HTTP de redirección 3xx. Cuando un servidor devuelve una respuesta 300, indica que la solicitud tiene más de una respuesta posible. En otras palabras, el recurso solicitado corresponde a múltiples opciones disponibles. El servidor envía una lista de estas opciones al cliente, permitiéndole elegir qué recurso desea acceder.

En lugar de devolver una sola versión, el servidor proporciona una lista de opciones para que el cliente pueda decidir cuál obtener.

Por ejemplo:

En resumen, el 300 dice:

"Encontré lo que quieres, pero tienes múltiples opciones válidas. ¿Cuál te gustaría?"

Piénsalo como pedir en un restaurante: cuando el camarero explica varios platos igualmente válidos, tú eliges cuál te gustaría. De manera similar, la respuesta 300 presenta opciones al cliente.

Los orígenes del código de estado 300

La respuesta 300 Multiple Choices se introdujo en la especificación HTTP/1.1 (RFC 7231). El razonamiento era simple:

Fue diseñado para proporcionar flexibilidad y control al cliente.

¿Por qué existe el 300 Multiple Choices?

Quizás te preguntes, ¿por qué no simplemente redirigir a un recurso específico y usar una redirección 301 o 302? La razón por la que existe el 300 Multiple Choices es para proporcionar transparencia y elección.

Algunos escenarios requieren dar a los clientes más de una opción para un recurso, en lugar de asumir lo que quieren. Es una forma en que los servidores dicen: "Oye, aquí hay varias coincidencias viables para esa solicitud. Tú decides cuál encaja mejor."

Este enfoque puede mejorar la experiencia del usuario, admitir contenido multilingüe o multiformato y hacer que las API sean más flexibles.

Cómo se suponía que funcionaría: un ejemplo teórico

Cuando un servidor devuelve un código de estado 300, generalmente incluye un cuerpo de respuesta o encabezados que indican las diferentes opciones disponibles. El cliente luego usa esta información para decidir qué recurso solicitar a continuación.

Imaginemos un escenario para el sitio web de una universidad.

1. La Solicitud: Un usuario de alguna parte del mundo solicita la página de inicio.

GET / HTTP/1.1Host: www.university.example

2. El Dilema del Servidor: El servidor tiene la página de inicio disponible en inglés, español y francés. No sabe qué idioma prefiere el usuario. En lugar de adivinar (por ejemplo, usando el encabezado Accept-Language), decide dejar que el usuario elija.

3. La Respuesta 300:

HTTP/1.1 300 Multiple ChoicesContent-Type: text/html; charset=utf-8

<html>
<head><title>Choose a Language</title></head>
<body>
  <h1>Please select your preferred language:</h1>
  <ul>
    <li><a href="/en">English</a></li>
    <li><a href="/es">Español</a></li>
    <li><a href="/fr">Français</a></li>
  </ul>
</body>
</html>

El servidor también podría incluir sugerencias más avanzadas legibles por máquina en los encabezados, como un encabezado Link, aunque esto rara vez se implementa.

4. La Acción del Usuario: El usuario ve esta página en su navegador y hace clic en "English".

5. La Redirección: El navegador luego realiza una nueva solicitud a /en, y el servidor responde con la página de inicio en inglés y un estado 200 OK.

Esto puede ocurrir automáticamente en navegadores o programáticamente en APIs.

El defecto fatal: por qué el 300 Multiple Choices rara vez se usa

Esto parece lógico, entonces, ¿por qué este código casi nunca se encuentra en la web moderna? Los problemas son numerosos y fundamentales.

1. Rompe la automatización: La web funciona con navegadores de automatización, scripts, APIs, rastreadores de motores de búsqueda. Estos agentes esperan instrucciones claras. Una respuesta 300 obliga a un humano a tomar una decisión, deteniendo cualquier proceso automatizado. Un rastreador no sabría qué enlace seguir.

2. Mala experiencia de usuario (UX): Es una experiencia torpe e interruptiva para el usuario. La mejor práctica moderna es:

3. No es eficiente: Requiere un viaje de ida y vuelta adicional (solicitud -> 300 -> elección del usuario -> nueva solicitud) en lugar de una redirección simple y automática.

4. Ambigüedad: La especificación HTTP no define estrictamente cómo deben presentarse las opciones. ¿Debería ser una página HTML? ¿Un formato XML específico? Esta falta de un estándar lo hace poco confiable para que las máquinas lo analicen.

Escenarios comunes para el 300 Multiple Choices

Exploremos algunos casos de uso donde el 300 Multiple Choices puede ser útil:

¿Cómo se ve una respuesta 300?

El formato exacto de una respuesta 300 puede variar, dependiendo del servidor y el caso de uso, pero típicamente contiene una lista o enlaces.

Aquí hay un ejemplo simple de una respuesta con enlaces en el cuerpo del mensaje:

textHTTP/1.1 300 Multiple Choices Content-Type: text/html
<html> 
<body> 
<h1>Multiple Choices</h1> <ul> 
<li><a href="/resource1.html">Resource 1</a></li> 
<li><a href="/resource2.html">Resource 2</a></li> 
<li><a href="/resource3.html">Resource 3</a></li> </ul> 
</body> 
</html>

Esto permite que el cliente o el usuario haga clic o seleccione el recurso que desea.

Manejo del 300 Multiple Choices en el lado del cliente

Cuando tu cliente encuentra una respuesta 300, esto es lo que debe hacer:

Muchos navegadores pueden solicitar a los usuarios que seleccionen manualmente, pero las API generalmente necesitan automatizar esta lógica.

300 Multiple Choices vs. otros códigos de estado 3xx

Para comprender mejor el 300, comparémoslo con otros códigos 3xx comunes:

Código de Estado Descripción Cuándo Usar
300 Múltiples Opciones Múltiples opciones para el recurso solicitado Cuando los clientes deben elegir entre múltiples representaciones
301 Movido Permanentemente El recurso se ha movido permanentemente Usar si un recurso se movió a una única nueva ubicación
302 Encontrado Redirección temporal Dirigir temporalmente al cliente a un recurso diferente
303 Ver Otro Redirigir usando GET a otro recurso Después de POST, redirigir al cliente a una URL de recuperación
304 No Modificado Recurso en caché, sin cambios Usar para optimizaciones de caché

A diferencia del 301 o 302 que dirigen a los clientes automáticamente, el 300 requiere la entrada del cliente.

300 vs. Otros códigos de redirección

Código Significado Caso de Uso Típico
300 Múltiples Opciones Múltiples idiomas, formatos o calidades
301 Movido Permanentemente Nueva URL permanente
302 Encontrado Redirección temporal
303 Ver Otro Redirigir después de POST a otro recurso
304 No Modificado Versión en caché sigue siendo válida

Desafíos al usar el 300 Multiple Choices

Si bien el 300 Multiple Choices puede ser útil, presenta algunos desafíos:

Por qué los desarrolladores aún deberían conocer el 300 Multiple Choices

Aunque el 300 Multiple Choices no es común, comprenderlo es importante por varias razones:

Implementación del 300 Multiple Choices: mejores prácticas

Si decides usar el 300 Multiple Choices para tu servidor o API, aquí tienes algunos consejos:

Ejemplos reales del 300 Multiple Choices

Ejemplo 1: Variantes de idioma

Un sitio web multilingüe ofrece páginas en inglés, español y francés para la misma ruta de recurso, devolviendo 300 para que el usuario pueda seleccionar.

GET /docs HTTP/1.1

Respuesta:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json

{
  "available_variants": [
    { "language": "en", "url": "/docs/en" },
    { "language": "es", "url": "/docs/es" },
    { "language": "zh", "url": "/docs/zh" }
  ]
}

Ejemplo 2: Formato de contenido

Un servicio de intercambio de archivos puede presentar enlaces de descarga para tipos de archivo originales, comprimidos o alternativos.

GET /data HTTP/1.1

Respuesta:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json
{
  "available_formats": [
    { "type": "application/json", "url": "/data.json" },
    { "type": "application/xml", "url": "/data.xml" },
    { "type": "text/html", "url": "/data.html" }
  ]
}

Ejemplo 3: Calidad de medios

Un endpoint de API que sirve imágenes podría devolver 300 con opciones para diferentes resoluciones o formatos.

GET /video HTTP/1.1

Respuesta:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json

{
  "resolutions": [
    { "quality": "480p", "url": "/video-480.mp4" },
    { "quality": "720p", "url": "/video-720.mp4" },
    { "quality": "1080p", "url": "/video-1080.mp4" }
  ]
}

Beneficios de usar el 300 Multiple Choices

Usar 300 Multiple Choices puede sonar raro, pero tiene algunos beneficios reales:

Errores comunes y malentendidos

Probando respuestas 300 con Apidog

Aunque es probable que nunca construyas una API que devuelva 300, comprender cómo probar todos los códigos de estado posibles es una señal de un desarrollador minucioso. Apidog es la herramienta perfecta para explorar estos matices de HTTP.

Con Apidog, puedes:

  1. Simular una respuesta 300: Crea un endpoint simulado en Apidog que devuelva un estado 300 con un cuerpo HTML personalizado que enumere las opciones. Esto es excelente para probar cómo tu aplicación manejaría este escenario inusual.
  2. Probar la resiliencia del cliente: Usa tu endpoint simulado para asegurarte de que tu aplicación cliente (por ejemplo, una aplicación móvil o un script) no falle cuando reciba un 300 inesperado y tenga una estrategia de respaldo.
  3. Comparar con prácticas modernas: Usa Apidog para probar la negociación de contenido adecuada. Crea solicitudes con diferentes encabezados Accept y Accept-Language y verifica que tu servidor responda correctamente con redirecciones 302 al recurso apropiado.
  4. Documentar el comportamiento: Si alguna vez necesitaras usar un 300, podrías usar Apidog para documentar el formato de respuesta esperado y las opciones para otros desarrolladores.
button

De esta manera, no necesitas configurar manualmente un backend solo para simular casos extremos. Descarga Apidog gratis y toma el control de tu proceso de prueba de API, incluso para los códigos de estado HTTP más complicados como el 300.

Mejores prácticas para desarrolladores

Consideraciones avanzadas para diseñadores de API

Las alternativas modernas y mejores

Hoy en día, los escenarios en los que se podría haber utilizado un 300 se manejan de formas mucho mejores:

1. Para la negociación de contenido (idioma, formato):

Esta es la característica clave que hizo obsoleto el 300. El cliente puede establecer sus preferencias de antemano usando encabezados, y el servidor puede redirigir automáticamente a la mejor opción.

El servidor puede entonces enviar automáticamente una redirección 302 Found o 303 See Other al recurso más apropiado (/en/index.html o /data.json), evitando por completo la necesidad de una elección manual.

2. Para múltiples representaciones:

Si un recurso tiene múltiples formatos (por ejemplo, PDF, DOCX, TXT), el enfoque moderno es ofrecer enlaces a todos ellos en una única página de destino con estado 200 OK, no usar una respuesta 300.

Conclusión: Adoptando el HTTP 300 Multiple Choices en tu desarrollo

El HTTP 300 Multiple Choices es una parte fascinante del ecosistema HTTP a menudo oculta del uso diario. Su propósito de ofrecer múltiples opciones válidas para un recurso brinda flexibilidad tanto a los servidores como a los clientes, especialmente al tratar con contenido multiformato y multiversión.

Para los desarrolladores de hoy, la lección del 300 es apreciar la elegancia de las soluciones de la web moderna. El uso de encabezados para la negociación de contenido y las redirecciones decisivas 3xx proporciona una experiencia más rápida, confiable y automatizada tanto para usuarios como para máquinas.

Al final, la web evolucionó en una dirección diferente: la de la automatización, la negociación explícita de contenido y una experiencia de usuario fluida. El código 300 permanece en la especificación, un fantasma de un futuro potencial que nunca se materializó.

El código de estado 300 Multiple Choices es uno de esos códigos HTTP que no aparecen todos los días, pero cuando lo hacen, son poderosos.

Les dice a los clientes:

"Aquí hay múltiples recursos válidos. Tú decides cuál es el mejor."

Esto es especialmente útil en aplicaciones multilingües, APIs que ofrecen múltiples formatos o medios con diferentes niveles de calidad.

Si bien su adopción es limitada, representa la flexibilidad incorporada en HTTP; comprender el 300 mejora tu comprensión de la comunicación web y te prepara para casos extremos o requisitos de API especializados.

Y recuerda, para probar y documentar eficazmente las API que pueden devolver 300 Multiple Choices o cualquier otro código de estado, descargar Apidog gratis es un excelente primer paso. Apidog simplifica la interacción con respuestas de código HTTP complejas y aumenta tu productividad.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs