Arquivos Estáticos - FastAPI
Para criar interfaces de interação com o servidor, é comum utilizar páginas HTML. Essas páginas são compostas por arquivos estáticos que contêm código HTML e frequentemente incluem outros recursos estáticos, como estilos CSS, imagens ou scripts JavaScript. O FastAPI oferece uma solução prática e eficiente para gerenciar arquivos estáticos por meio do módulo fastapi.staticfiles
StaticFiles(directory=None, packages=None, html=False, check_dir=True)
Parâmetros da Classe StaticFiles
: Especifica o caminho do diretório onde os arquivos estáticos estão localizados.directory
: Lista de pacotes Python (como strings ou tuplas de strings) de onde os arquivos estáticos podem ser servidos.packages
: Quando definido comohtml
, o servidor opera no "modo HTML". Nesse caso, ao acessar a raiz do diretório configurado, o arquivoTrue
será enviado automaticamente (se estiver presente).index.html
: Garante que o diretório especificado existe no momento da inicialização.check_dir
A seguir, veja um exemplo prático de como utilizar esse recurso. Considere a seguinte estrutura de projeto:
. ├── public │ └── index.html ├── main.py
O diretório public
index.html
<!DOCTYPE html>
<html>
<head>
<title>Exemplo FastAPI</title>
<meta charset="utf-8" />
</head>
<body>
<h2>Olá, mundo!</h2>
</body>
</html>
No arquivo main.py
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount("/static", StaticFiles(directory="public"))
Para trabalhar com arquivos estáticos, primeiro importamos a classe StaticFiles
mount()
O método mount()
/static
StaticFiles
directory
/public
Ao acessar http://127.0.0.1:8000/static/index.html
index.html
public
Dessa forma, podemos adicionar outros arquivos estáticos ao diretório public
/static
Configurando uma Página Inicial
Muitas aplicações web possuem uma página inicial que é carregada automaticamente ao acessar a raiz do site. A classe StaticFiles
html
True
index.html
Atualize o código no arquivo main.py para o seguinte:
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount("/static", StaticFiles(directory="public", html=True))
Com esta configuração, ao acessar http://127.0.0.1:8000/static/
index.html
Configurando a Página Inicial para Toda a Aplicação
Se for necessário configurar o diretório de arquivos estáticos como a raiz de toda a aplicação, de modo que o arquivo index.html
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount("/", StaticFiles(directory="public", html=True))
Com essa configuração, ao acessar http://127.0.0.1:8000/
public