Cómo solucioné un error 404 en FastAPI: Recuperando routers perdidos tras una limpieza de módulos

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:

ToolSignal Pro Editorial

ToolSignal Pro는 AI·IT·소프트웨어 트렌드를 다루는 종합 IT 인사이트 매거진입니다.

이전 글 다음 글