Mas, o FastAPI (na verdade, o Starlette) fornece uma maneira mais simples de fazer isso que garante que os middlewares internos lidem com erros do servidor e que os manipuladores de exceções personalizados funcionem corretamente.
Para isso, você usa app.add_middleware() (como no exemplo para CORS).
FastAPI inclui vários middlewares para casos de uso comuns, veremos a seguir como usá-los.
Detalhes Técnicos
Para o próximo exemplo, você também poderia usar from starlette.middleware.something import SomethingMiddleware.
FastAPI fornece vários middlewares em fastapi.middleware apenas como uma conveniência para você, o desenvolvedor. Mas a maioria dos middlewares disponíveis vem diretamente do Starlette.
Garante que todas as requisições recebidas tenham um cabeçalho Host corretamente configurado, a fim de proteger contra ataques de cabeçalho de host HTTP.
allowed_hosts - Uma lista de nomes de domínio que são permitidos como nomes de host. Domínios com coringa, como *.example.com, são suportados para corresponder a subdomínios. Para permitir qualquer nome de host, use allowed_hosts=["*"] ou omita o middleware.
Se uma requisição recebida não for validada corretamente, uma resposta 400 será enviada.
minimum_size - Não comprima respostas menores que este tamanho mínimo em bytes. O padrão é 500.
compresslevel - Usado durante a compressão GZip. É um inteiro variando de 1 a 9. O padrão é 9. Um valor menor resulta em uma compressão mais rápida, mas em arquivos maiores, enquanto um valor maior resulta em uma compressão mais lenta, mas em arquivos menores.