Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

294
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!