Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

295
Vistas
Manejo y redirección de FastAPI 404

¿Cómo puedo redirigir una solicitud con FastAPI si hay una HTTPException?

En Flask podemos lograr eso así:

 @app.errorhandler(404) def handle_404(e): if request.path.startswith('/api'): return render_template('my_api_404.html'), 404 else: return redirect(url_for('index'))

O en Django podemos usar django.shortcuts:

 from django.shortcuts import redirect def view_404(request, exception=None): return redirect('/')

¿Cómo podemos lograr eso con FastAPI?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Podemos lograr eso usando el controlador de excepciones de FastAPI:

Si tienes prisa, puedes usar esto:

 from fastapi.responses import RedirectResponse from starlette.exceptions import HTTPException as StarletteHTTPException @app.exception_handler(StarletteHTTPException) async def custom_http_exception_handler(request, exc): return RedirectResponse("/")

Pero un enfoque más específico, puede crear su(s) propio(s) controlador(es) de excepciones:

 class UberSuperHandler(StarletteHTTPException): pass def function_for_uber_super_handler(request, exc): return RedirectResponse("/") app.add_exception_handler(UberSuperHandler, function_for_uber_super_handler)
over 4 years ago · Santiago Trujillo Denunciar

0

Sé que es demasiado tarde, pero este es el enfoque más corto para manejar las excepciones 404 a su manera personal.

redirigir

 from fastapi.responses import RedirectResponse @app.exception_handler(404) async def custom_404_handler(_, __): return RedirectResponse("/")

Plantilla Jinja personalizada

 from fastapi.templating import Jinja2Templates from fastapi.staticfiles import StaticFiles templates = Jinja2Templates(directory="templates") app.mount("/static", StaticFiles(directory="static"), name="static") @app.exception_handler(404) async def custom_404_handler(request, __): return templates.TemplateResponse("404.html", {"request": request})

Servir HTML desde un archivo

 @app.exception_handler(404) async def custom_404_handler(_, __): return FileResponse('./path/to/404.html')

Sirve HTML directamente

 from fastapi.responses import HTMLResponse response_404 = """ <!DOCTYPE html> <html lang="en"> <head> <title>Not Found</title> </head> <body> <p>The file you requested was not found.</p> </body> </html> """ @app.exception_handler(404) async def custom_404_handler(_, __): return HTMLResponse(response_404)

Nota : el decoradorException_handler pasa la request exception exception_handler argumentos a la función. He usado _ y __ donde las variables son innecesarias.

over 4 years ago · Santiago Trujillo Denunciar

0

Yo uso este método,

 from fastapi.responses import RedirectResponse from starlette.exceptions import HTTPException as StarletteHTTPException app.mount("/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="templates") @app.exception_handler(StarletteHTTPException) async def custom_http_exception_handler(request, exc): return templates.TemplateResponse("404.html", {"request": request})
  • Asegúrese de tener una carpeta estática, para sus archivos estáticos y una carpeta de plantillas para sus archivos html.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda