🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónDiferencias entre contrato y comportamiento real
5 tareas · 40 min · Principiante
Un contrato correcto no garantiza una API correcta. Con el tiempo el código gana rutas, métodos y campos que nadie escribió en el contrato, y lo que no está en el contrato tampoco lo revisa nadie ni lo protege la pasarela. En Droguerías Tasajera el equipo de salud asegura que su API de recetas hace exactamente lo que promete. Tienes el contrato publicado, un día de registro de la pasarela y una respuesta guardada con la cuenta de prueba.
Objetivo de la sala
Un contrato correcto no garantiza una API correcta. Con el tiempo el código gana rutas, métodos y campos que nadie escribió en el contrato, y lo que no está en el contrato tampoco lo revisa nadie ni lo protege la pasarela. En Droguerías Tasajera el equipo de salud asegura que su API de recetas hace exactamente lo que promete. Tienes el contrato publicado, un día de registro de la pasarela y una respuesta guardada con la cuenta de prueba.La diferencia entre lo que el contrato promete y lo que la API hace se suele llamar deriva. Aparece por caminos muy normales: un desarrollador agrega una ruta para un informe urgente, un framework expone por defecto un método que nadie pidió, una consulta a la base de datos devuelve todas las columnas y el serializador las pasa todas a la respuesta. Ninguno de esos cambios toca el contrato, así que la revisión de diseño, la documentación y las pruebas generadas a partir de él siguen diciendo que todo está bien.
Por eso la deriva no se busca releyendo el contrato. Se busca comparándolo con algo que muestre lo que la API hizo de verdad: el registro de la pasarela o del servicio, que dice qué combinaciones de método y ruta respondieron con éxito, y respuestas reales guardadas con una cuenta de prueba, que dicen qué campos salieron.
Responde para continuar
Para encontrar rutas y campos que la API tiene y su contrato no declara, ¿con qué hay que comparar el contrato?
Ver pista de ayuda
Lo generado desde el contrato repite lo que el contrato ya dice.
Abre el laboratorio. En recetas-v1.yaml hay tres rutas, cada una con sus métodos. Las rutas del contrato tienen plantillas ({recetaId}) y en el registro aparecen con valores concretos, así que compara la forma, no el texto exacto. Recorre registro-pasarela.txt y separa lo que encaja en alguna ruta del contrato de lo que no encaja en ninguna, con ningún método.
Responde para continuar
¿Qué ruta respondió con éxito en el registro y no existe en el contrato con ningún método? Escríbela sin parámetros de consulta.
Ver pista de ayuda
Hay una ruta que nadie documentó y que llaman dos consumidores distintos.
No todo lo que no está en el contrato se nota igual. Una ruta inventada es fácil de ver; un método de más sobre una ruta que sí existe pasa desapercibido, porque la ruta parece conocida. Y no todo intento fuera del contrato es un problema: si la API lo rechazó con un 404, un 405 o un 403, la puerta estaba cerrada.
Cuenta en el registro las peticiones cuya combinación de método y ruta no está en el contrato y que aun así recibieron una respuesta de éxito (cualquier estado 2xx).
Responde para continuar
¿Cuántas peticiones del registro usaron una combinación de método y ruta que el contrato no declara y recibieron una respuesta de éxito?
Ver pista de ayuda
Cuenta la ruta no documentada y también el método que no aparece en ninguna ruta del contrato. Descarta los rechazos.
La deriva también vive dentro de las respuestas. Un esquema de respuesta es una promesa de qué sale; si la respuesta real trae más, ese dato sale sin que nadie haya decidido que salga, y es justo el caso que el Top 10 de OWASP para APIs (edición 2023) agrupa en la autorización a nivel de propiedad (API3:2023): el cliente recibe propiedades que no debería ver.
Compara respuesta-receta.json con el esquema Receta del contrato, propiedad por propiedad. Hay dos campos de más; uno es ruido técnico y el otro no.
Responde para continuar
¿Qué campo de la respuesta guardada contiene datos de salud y no está declarado en el esquema de la receta?
Ver pista de ayuda
El campo técnico empieza por un guion bajo y solo nombra un servidor.
Arreglar las tres diferencias de hoy no impide las de mañana. La deriva se controla cuando el contrato deja de ser un documento que se actualiza a mano y pasa a ser la regla que algo comprueba en cada cambio y en cada petición. Cada diferencia encontrada exige además una decisión: o la API se ajusta al contrato, o el contrato se cambia con revisión de seguridad para incluir lo que de verdad hace falta.
Responde para continuar
¿Qué combinación ataca la causa de la deriva en la API de recetas?
Ver pista de ayuda
Busca la opción en la que el contrato se comprueba solo, no la que depende de la memoria de alguien.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.