Gobiru é uma ferramenta para gerar automaticamente documentação de APIs Go, suportando os frameworks Gin, Gorilla Mux e Fiber.
go install github.com/jeffemart/gobiru/cmd/gobiru@latest
O Gobiru analisa seu código fonte e gera documentação em formato OpenAPI (Swagger).
-framework
: Framework usado (gin, mux, fiber)-main
: Arquivo principal da aplicação (opcional)-title
: Título da documentação-description
: Descrição da API-version
: Versão da API
O projeto inclui testes para garantir a funcionalidade correta. Para executar todos os testes, use o seguinte comando:
go test ./...
Os testes verificarão se as funções e rotas estão funcionando conforme o esperado.
./gobiru -framework gin \
-main examples/gin/main.go \
-output examples/gin/docs/routes.json \
-openapi examples/gin/docs/openapi.json \
-title "API Gin" \
-description "API de exemplo usando Gin" \
-version "1.0.0"
Exemplo de rota com Gin:
func SetupAuthRoutes(r *gin.Engine) {
api := r.Group("/api/v1")
users := api.Group("/users")
{
users.GET("/:id", handlers.GetUser)
users.POST("", handlers.CreateUser)
users.PUT("/:id", handlers.UpdateUser)
}
}
./gobiru -framework mux \
-main examples/gorilla/main.go \
-output examples/gorilla/docs/routes.json \
-openapi examples/gorilla/docs/openapi.json \
-title "API Mux" \
-description "API de exemplo usando Gorilla Mux" \
-version "1.0.0"
Exemplo de rota com Mux:
func SetupPublicRoutes(r *mux.Router) {
api := r.PathPrefix("/api/v1").Subrouter()
// Autenticação
auth := api.PathPrefix("/auth").Subrouter()
auth.HandleFunc("/login", handlers.Login).Methods("POST")
auth.HandleFunc("/register", handlers.Register).Methods("POST")
}
./gobiru -framework fiber \
-main examples/fiber/main.go \
-output examples/fiber/docs/routes.json \
-openapi examples/fiber/docs/openapi.json \
-title "API Fiber" \
-description "API de exemplo usando Fiber" \
-version "1.0.0"
Exemplo de rota com Fiber:
func SetupRoutes(app *fiber.App) {
api := app.Group("/api/v1")
// Produtos
products := api.Group("/products")
products.Get("/", handlers.ListProducts)
products.Post("/", handlers.CreateProduct)
products.Get("/:id", handlers.GetProduct)
}
O Gobiru funciona analisando a estrutura do seu projeto. Ele:
- Começa pelo arquivo main.go
- Segue os imports para encontrar arquivos de rotas e handlers
- Analisa a definição das rotas
- Gera documentação completa
seu-projeto/
├── main.go
├── routes/
│ ├── auth_routes.go # Rotas de autenticação
│ ├── product_routes.go # Rotas de produtos
│ └── order_routes.go # Rotas de pedidos
└── handlers/
├── auth_handlers.go # Handlers de autenticação
├── product_handlers.go # Handlers de produtos
├── order_handlers.go # Handlers de pedidos
└── models.go # Definições de estruturas
- Detecção automática de arquivos de rotas e handlers
- Suporte a múltiplos arquivos
- Geração de documentação JSON e OpenAPI
- Suporte a comentários para descrição das rotas
- Análise de parâmetros de rota, query e body
- Documentação de respostas e códigos de status
Contribuições são bem-vindas! Por favor, sinta-se à vontade para submeter pull requests.
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.