Pero FastAPI (en realidad Starlette) proporciona una manera más simple de hacerlo que asegura que los middlewares internos manejen los errores del servidor y los custom exception handlers funcionen correctamente.
Para eso, usas app.add_middleware() (como en el ejemplo de CORS).
FastAPI incluye varios middlewares para casos de uso comunes, veremos a continuación cómo usarlos.
Detalles Técnicos
Para los próximos ejemplos, también podrías usar from starlette.middleware.something import SomethingMiddleware.
FastAPI proporciona varios middlewares en fastapi.middleware solo como una conveniencia para ti, el desarrollador. Pero la mayoría de los middlewares disponibles vienen directamente de Starlette.
allowed_hosts - Una lista de nombres de dominio que deberían ser permitidos como hostnames. Los dominios wildcard como *.example.com son soportados para matching de subdominios. Para permitir cualquier hostname usa allowed_hosts=["*"] u omite el middleware.
www_redirect - Si se establece a True, las requests a versiones non-www de los hosts permitidos serán redirigidas a sus contrapartes www. Por defecto es True.
Si una request entrante no se valida correctamente, se enviará una response 400.
minimum_size - No aplicar GZip a responses que sean más pequeñas que este tamaño mínimo en bytes. Por defecto es 500.
compresslevel - Usado durante la compresión GZip. Es un entero que va de 1 a 9. Por defecto es 9. Un valor más bajo resulta en una compresión más rápida pero archivos más grandes, mientras que un valor más alto resulta en una compresión más lenta pero archivos más pequeños.