Códigos de estado HTTP para GSI: guía práctica y preguntas tipo test
Respuesta rápida: los códigos de estado HTTP indican el resultado de una solicitud. Su primer dígito señala la familia: 1xx información, 2xx éxito, 3xx redirección, 4xx un problema atribuible a la solicitud y 5xx un fallo del servidor. Para resolver preguntas de GSI, no basta con memorizar el número: identifica qué pidió el cliente, qué respondió el servidor y si la respuesta contiene una representación, una ubicación nueva o una indicación para volver a intentar la operación.
Esta guía usa las definiciones de RFC 9110, HTTP Semantics, publicada por el RFC Editor. Es una referencia técnica para estudiar HTTP; consulta siempre las bases y el programa de la convocatoria que te corresponda para conocer el alcance exigido en tu oposición.
Cómo leer un código HTTP sin aprender una lista de memoria
En una interacción HTTP, el cliente envía una solicitud con un método, una dirección y, a veces, un cuerpo. El servidor devuelve una respuesta con un código de estado y otros campos. El código comunica la interpretación del resultado de esa solicitud; por sí solo no demuestra que toda la aplicación funcione correctamente.
- 1xx: respuesta provisional. Indica que la solicitud sigue en curso.
- 2xx: la solicitud se ha recibido, comprendido y aceptado correctamente, con matices según el código.
- 3xx: hace falta una acción adicional, normalmente seguir otra ubicación o usar una copia almacenada.
- 4xx: la solicitud presenta un problema o no puede atenderse en esas condiciones.
- 5xx: el servidor no puede satisfacer una solicitud aparentemente válida.
El truco para un test consiste en buscar el verbo decisivo del enunciado: crear, sin contenido, autenticarse, prohibido, no encontrado o temporalmente no disponible. Luego comprueba la familia antes de elegir el código concreto.
Códigos 2xx: éxito no significa siempre «200»
200 OK, 201 Created y 204 No Content
200 OK indica que la solicitud ha tenido éxito. Lo que incluye la respuesta depende del método: en una petición GET suele representar el recurso solicitado. 201 Created indica que la petición se ha cumplido y ha creado uno o más recursos. La respuesta puede identificar el recurso principal creado mediante el campo Location. 204 No Content indica éxito, pero la respuesta no lleva contenido; resulta útil cuando la operación se completa y no hace falta enviar una nueva representación.
Imagina una API de práctica. Consultar una pregunta puede devolver 200 con los datos. Crear una nueva pregunta puede devolver 201 y su ubicación. Marcar una pregunta como revisada puede devolver 204 si la operación termina sin cuerpo de respuesta. Son ejemplos didácticos: una implementación concreta puede escoger otros códigos válidos según su contrato.
Códigos 3xx: redirección y caché no son lo mismo
301 Moved Permanently señala que el recurso tiene una nueva URI permanente. 302 Found indica que está temporalmente bajo otra URI. En ambos casos, el campo Location puede señalar el destino. No deduzcas de una redirección temporal que la dirección original se haya abandonado definitivamente.
304 Not Modified aparece cuando una solicitud condicional de GET o HEAD habría dado 200 si la condición no se hubiera evaluado como falsa. Su función habitual es permitir que el cliente reutilice una representación que ya tiene almacenada. Por eso 304 pertenece a 3xx, aunque no significa que el recurso haya cambiado de dirección. Si un enunciado menciona If-None-Match, un validador y una copia en caché, piensa en esta posibilidad.
Códigos 4xx: petición, identidad y permisos
| Código | Idea principal | Pista para distinguirlo |
|---|---|---|
| 400 Bad Request | El servidor no puede o no quiere procesar la solicitud por un error que percibe en ella. | Sintaxis incorrecta u otro problema de la propia petición. |
| 401 Unauthorized | La petición carece de credenciales de autenticación válidas para el recurso. | La respuesta incluye un desafío de autenticación mediante WWW-Authenticate. |
| 403 Forbidden | El servidor entiende la petición, pero se niega a satisfacerla. | Repetirla con las mismas credenciales no cambia el rechazo. |
| 404 Not Found | El servidor no encontró una representación actual del recurso o no quiere revelar que existe. | No concluyas que la ausencia sea definitiva. |
| 405 Method Not Allowed | El método se conoce, pero el recurso no lo admite. | La respuesta debe incluir Allow con los métodos admitidos. |
| 409 Conflict | La solicitud entra en conflicto con el estado actual del recurso. | Puede requerir resolver el conflicto antes de repetirla. |
La confusión clásica es 401 frente a 403. El nombre histórico Unauthorized puede engañar: 401 trata de autenticación; 403 expresa una negativa a atender la solicitud. Tampoco equipares 404 con «borrado para siempre». La especificación reserva otros matices para esa situación, y además permite usar 404 cuando el servidor no desea revelar un recurso prohibido.
Para estudiar, convierte cada fila en una pregunta de recuperación: «¿Qué código exige un desafío WWW-Authenticate?», «¿Cuál exige Allow?». Contesta antes de mirar la tabla. Esa comprobación breve ayuda más que releerla sin decidir.
Códigos 5xx: dónde está el fallo
500 Internal Server Error expresa que el servidor encontró una condición inesperada que le impidió atender la solicitud. 502 Bad Gateway se aplica cuando un servidor que actúa como puerta de enlace o proxy recibió una respuesta inválida del servidor al que acudió. 503 Service Unavailable indica que el servidor no puede atender la solicitud en ese momento, por ejemplo por sobrecarga o mantenimiento. Puede incluir Retry-After para orientar sobre cuándo volver a intentarlo.
La diferencia práctica entre 502 y 503 depende de qué componente falló: en 502, un intermediario recibió una respuesta inválida de un servidor de origen; en 503, el servidor que responde comunica indisponibilidad temporal. En una pregunta de examen, no deduzcas 502 solo porque haya «un error de servidor»; busca la mención explícita a la función de proxy o puerta de enlace.
Un método de tres pasos para resolver preguntas tipo test
- Subraya el hecho observable. ¿Se creó un recurso? ¿No hay cuerpo? ¿Existe una petición condicional? ¿Faltan credenciales? ¿Interviene un proxy?
- Descarta por familia. Una creación satisfactoria apunta a 2xx; una petición que no puede atenderse por autenticación apunta a 4xx; un fallo de un intermediario apunta a 5xx.
- Comprueba el matiz normativo. Contrasta 201 con 204, 401 con 403 y 502 con 503. Si la pregunta cita un campo de cabecera, úsalo:
Location,WWW-Authenticate,AllowoRetry-Aftercambian la interpretación.
Ejemplo: «Una solicitud crea un recurso y la respuesta identifica su nueva dirección». La familia es 2xx, el verbo es crear y la dirección puede venir en Location: la opción más ajustada es 201 Created. Otro ejemplo: «El servidor entiende la solicitud, pero deniega el acceso». Sin indicio de credenciales ausentes y desafío de autenticación, 403 Forbidden describe mejor el caso que 401.
Al corregir, anota la razón de cada distractor: «200 indica éxito genérico, pero 201 añade creación» o «404 no prueba eliminación permanente». Puedes ampliar este método en la guía sobre cómo analizar errores en tests de GSI.
Cómo repasarlos con PreparaGSI
Organiza una sesión breve: primero responde tests sobre escenarios, luego transforma las confusiones recurrentes en flashcards de una pregunta y una respuesta, y termina con un repaso mediante audio-podcasts. Por ejemplo, una tarjeta puede preguntar «¿401 o 403 cuando faltan credenciales válidas?» y otra «¿Qué distingue 204 de 201?». Puedes usar estas formas de estudio en PreparaGSI y volver a la especificación cuando una respuesta te plantee dudas. El objetivo del repaso es explicar cada elección, no acumular aciertos sin entenderlos.
Preguntas frecuentes
¿Un código 200 significa que se ha creado un recurso?
No necesariamente. 200 comunica éxito; cuando la petición ha creado uno o más recursos, 201 expresa ese resultado de forma específica.
¿401 y 403 significan lo mismo?
No. 401 se refiere a credenciales de autenticación válidas que faltan para el recurso y exige un desafío; 403 indica que el servidor entiende la petición y se niega a atenderla.
¿304 es un error porque no devuelve el recurso completo?
No. En una solicitud condicional permite aprovechar una representación almacenada cuando no hace falta transferirla de nuevo.
¿Estos códigos forman parte de mi convocatoria GSI?
El alcance concreto depende de las bases y el programa oficial aplicables. Esta guía explica semántica HTTP; revisa la convocatoria que vayas a preparar antes de fijar prioridades de estudio.
Fuente técnica primaria: RFC 9110 — HTTP Semantics, especialmente la sección 15 sobre códigos de estado. Las situaciones de API de esta guía son ejemplos de estudio, no reglas sobre cómo debe responder toda aplicación.