3 min read · 608 words
Si estás trabajando con FastAPI y de repente te has topado con un molesto error 404 al llamar a un endpoint que jurabas que existía, este post te interesa. Te cuento cómo, haciendo limpieza de módulos obsoletos, me cargué sin querer un par de routers activos y cómo logré rescatarlos del archivo para solucionar el problema de inmediato.
El problema
Estaba intentando que la tarjeta del inspector (inspector card) en la pestaña de indexación mostrara correctamente el estado del inspector (`inspector state`). Sin embargo, la interfaz no pintaba nada y la consola me escupía un bonito error 404 en FastAPI que me rompió por completo el flujo.
Síntomas del error
Durante un chequeo visual con Chrome MCP (visual sweep), vi que el endpoint `/api/inspector/state` devolvía un rotundo 404. En la tarjeta de indexación aparecía el mensaje de error explícito: `Inspector 상태 로드 실패: inspector state HTTP 404`. Nuestro bucle de smoke-test interno no tenía el inspector en su lista de objetivos, por lo que este fallo no saltó en las pruebas automáticas previas.
El entorno
Hablamos de una webapp basada en FastAPI. Hace poco había estado haciendo limpieza (pruning) del módulo `sess140`, moviendo los archivos obsoletos al directorio `_archive/sess140-prune/` para dejar el repositorio limpio.
Lo que intenté (y no funcionó)
Pensando que podría ser un problema de caché o un fallo temporal de carga, probé a reiniciar la webapp (`webapp restart`). Spoiler: no sirvió de nada. El 404 seguía ahí, inamovible.
La solución definitiva al error 404 de FastAPI
Tras investigar a fondo, di con la raíz del problema. Al hacer la limpieza del módulo `sess140`, me llevé por delante dos archivos clave: `webapp/routers/inspector.py` y `webapp/seo/inspector.py`, moviéndolos por error a la carpeta de archivo. Lo curioso es que, gracias a un stub `_NullModule`, el router seguía registrándose sin lanzar errores de importación al arrancar la app, pero claro, el número de rutas activas era exactamente 0. De ahí el maldito 404.
Para solucionarlo, simplemente restauré ambos archivos desde la carpeta de archivo a sus ubicaciones originales. Moraleja: cuando te pongas a meter la tijera para limpiar código muerto, piérdete un segundo más confirmando qué borras. Y menos mal que tenemos la costumbre de archivar antes de eliminar del todo.
Comandos utilizados
Aquí tienes los comandos de terminal que usé para devolver los módulos del inspector a su sitio:
# Restaurar los módulos del inspector desde el archivo
cp _archive/sess140-prune/inspector.py webapp/routers/
cp _archive/sess140-prune/seo/inspector.py webapp/seo/Resultado y verificación
Reinicié la webapp para aplicar los cambios y... ¡bingo! Al llamar a `/api/inspector/state` recibí un glorioso HTTP 200. El contador de `router.routes` volvió a mostrar los 6 endpoints correspondientes y la tarjeta en la pestaña de indexación se renderizó perfectamente. Estado actual: solucionado (fixed).
Consejo si te pasa lo mismo
Si de la noche a la mañana un endpoint de FastAPI te empieza a devolver un 404, sospecha inmediatamente de las últimas tareas de refactorización o limpieza de código. Revisa si tienes módulos stub o vacíos que estén dejando cascarones de routers sin rutas reales asociadas. Es la forma más rápida de cazar este tipo de bugs.
Category Coverage Notice
This article follows our label-specific editorial criteria. Details: