API leve de ferramentas úteis para integração com N8N, desenvolvida com FastAPI.
- Conversão de HTML para PDF: Converte conteúdo HTML em arquivos PDF de alta qualidade
.
├── app/ # Pacote principal da aplicação
│ ├── api/ # Camada de API
│ │ ├── models/ # Modelos de dados Pydantic
│ │ ├── routes/ # Rotas da API
│ │ └── app.py # Configuração da aplicação FastAPI
│ ├── core/ # Configurações e componentes principais
│ │ ├── config.py # Configurações da aplicação
│ │ └── security.py # Implementação de segurança
│ ├── services/ # Serviços de negócio
│ └── utils/ # Utilitários
├── main.py # Ponto de entrada principal
├── run.py # Script para execução da aplicação
├── Dockerfile # Configuração do Docker
├── docker-compose.yml # Configuração do Docker Compose
├── requirements.txt # Dependências Python
└── .env # Variáveis de ambiente
- Python 3.8+
- Dependências listadas em
requirements.txt
- Clone o repositório
- Instale as dependências:
pip install -r requirements.txt- Configure a variável de ambiente copiando o arquivo
.env.examplepara.enve definindo sua chave de API:
cp .env.example .env
# Edite o arquivo .env e defina sua API_KEYPara iniciar o servidor em modo de desenvolvimento:
python run.pyOu diretamente com uvicorn:
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadPara produção, recomenda-se usar o Docker:
docker-compose up -dAlternativamente, pode-se usar o Gunicorn com workers Uvicorn:
gunicorn main:app -w 2 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000Endpoint: POST /convert/html-to-pdf
Headers:
X-API-Key: Sua chave de API (definida no arquivo .env)
Corpo da requisição:
{
"html_content": "<html><body><h1>Teste</h1><p>Conteúdo do PDF</p></body></html>",
"filename": "documento.pdf",
"options": {
"presentational_hints": true
}
}Resposta: Arquivo PDF
A API inclui um endpoint de verificação de saúde (health check) que pode ser usado para monitoramento:
Endpoint: GET /health
Resposta:
{
"status": "healthy",
"version": "0.1.0",
"system_info": {
"python_version": "3.11.4",
"platform": "Linux-5.15.0-x86_64",
"memory_usage": "45.2%",
"disk_usage": "68.7%"
}
}A API é protegida por uma chave de API que deve ser enviada no cabeçalho X-API-Key em todas as requisições protegidas.
O endpoint de health check é público para permitir monitoramento sem autenticação.
Esta API foi projetada para ser leve e consumir poucos recursos, ideal para execução em VPS com limitações de RAM:
- Limpeza automática de arquivos temporários
- Limitação de recursos no Docker Compose
- Uso eficiente de memória com WeasyPrint
- Estrutura modular para facilitar a manutenção e expansão