gapizer
v1.3.1
Published
GAPIzer - Um gerador de APIs automatizado
Readme
GAPIzer
Um gerador de APIs automatizado, simples e poderoso.
O GAPIzer é uma ferramenta CLI que permite gerar APIs completas a partir de um arquivo de configuração YAML. Ele cria a estrutura do projeto, incluindo rotas, handlers, middlewares (como autenticação e logging), documentação (Swagger) e muito mais. Ideal para desenvolvedores que desejam agilidade no desenvolvimento de APIs.
🚀 Instalação
Pré-requisitos
- Golang: Certifique-se de que o Go está instalado.
- Para instalar: https://go.dev/dl/
- Para verificar:
go version
1. Instalação via npm
Instale o GAPIzer globalmente usando o npm:
npm install -g gapizer2. Usando o Instalador para Windows
- Acesse a página de Releases.
- Baixe o instalador mais recente::
- Windows:
GAPIzer-Installer.exe
Instalar no Windows
- Execute o instalador baixado
(GAPIzer-Installer.exe). - Siga as instruções exibidas na tela.
- Após a instalação, o comando gapizer será configurado automaticamente no PATH do sistema.
3. Instalação Local (Compilando o Código)
Clone o repositório:
git clone https://github.com/rshmdev/gapizer.git cd gapizerInstale a CLI globalmente:
go installVerifique se a CLI foi instalada com sucesso:
gapizer --help
🛠️ Como Usar
Comando Básico
gapizer --config <arquivo_yaml> --output <diretorio_destino>Exemplo Rápido
Crie um arquivo
example.ymlcom a seguinte configuração:app_name: MyAwesomeAPI port: 8080 database: type: sqlite name: ./data.db logging: enabled: true output: console # Pode ser "console" ou "file" file_path: logs/server.log authentication: type: jwt secret: mysupersecretkey token_expiration_minutes: 60 endpoints: - name: /users method: GET protected: true response: id: int name: string - name: /products method: POST request: name: string price: float64 response: id: int name: string price: float64Gere a API:
gapizer --config example.yml --output ./generatedEstrutura gerada:
generated/ ├── handlers/ │ ├── users.go │ └── products.go ├── routes/ │ ├── users.go │ └── products.go ├── middleware/ │ ├── auth.go │ └── logging.go ├── database/ │ └── database.go ├── docs/ │ └── swagger.yaml ├── main.go ├── go.mod └── swagger-ui/Rode o servidor:
cd generated go run main.goTeste os endpoints gerados:
- GET /users (protegido, requer JWT)
- POST /products
📄 Configuração do YAML
O arquivo YAML define os endpoints e outras configurações da API. Aqui está um exemplo completo:
app_name: MyAwesomeAPI # Nome da aplicação
port: 8080 # Porta do servidor
database: # Configuração do banco de dados
type: sqlite # Tipos suportados: sqlite, mysql, postgresql
name: ./data.db
logging: # Configuração de logs
enabled: true # Habilitar ou desabilitar logs
output: console # "console" ou "file"
file_path: logs/server.log # Caminho para arquivo de logs (se output = file)
authentication: # Configuração de autenticação
type: jwt # Tipo de autenticação (atualmente suporta apenas JWT)
secret: mysupersecretkey # Chave secreta para assinar tokens JWT
token_expiration_minutes: 60 # Expiração do token em minutos
endpoints: # Lista de endpoints
- name: /users # Caminho do endpoint
method: GET # Método HTTP
protected: true # Define se o endpoint é protegido (requer autenticação)
response: # Estrutura da resposta
id: int
name: string
- name: /products
method: POST
request: # Estrutura da requisição
name: string
price: float64
response: # Estrutura da resposta
id: int
name: string
price: float64📜 Documentação Automática (Swagger)
O GAPIzer gera automaticamente a documentação Swagger no arquivo swagger.yaml. Para visualizar:
- Acesse o Swagger Editor.
- Faça upload do arquivo
swagger.yamlgerado na pastadocs.
📋 Comandos Disponíveis
Ajuda
Exibe os comandos disponíveis:
gapizer --helpGerar API
Gera a estrutura da API:
gapizer --config <arquivo_yaml> --output <diretorio_destino>--config: Caminho para o arquivo YAML de configuração.--output: Diretório onde a API será gerada.
🤝 Contribuindo
Contribuições são bem-vindas! Para contribuir, siga estas etapas:
- Faça um fork do repositório.
- Crie um branch para a sua feature ou correção:
git checkout -b minha-feature - Faça commit das suas alterações:
git commit -m "Descrição clara da alteração" - Envie o branch:
git push origin minha-feature - Abra um Pull Request.
🛣️ Roadmap
Funcionalidades planejadas para o futuro:
- Suporte a Swagger UI diretamente no servidor gerado.
- Geração de clientes em diferentes linguagens (TypeScript, Python, etc.).
- Suporte a banco de dados dinamicamente mapeado.
- Logs estruturados em formato JSON para integração com ferramentas de monitoramento.
📝 Licença
Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
