Radix Tree Router
Routing berkecepatan tinggi berbasis net/http standar Go tanpa router eksternal.
Modern, High-Performance, Type-Safe Standalone Go Web Framework terinspirasi DX ala FastAPI & NestJS. Dilengkapi Zero-Boilerplate OpenAPI 3.1, AutoCRUD Engine, Built-in JWT, serta Hazart CLI Scaffolding.
Routing berkecepatan tinggi berbasis net/http standar Go tanpa router eksternal.
Cukup 1 struct Model, HazartGo otomatis generate 5 REST API CRUD Endpoints.
Dokumentasi API interaktif otomatis di /docs & /openapi.json tanpa file YAML.
HMAC-SHA256 JWT package serta middleware RequireRole & RequirePermission.
HazartGo hadir untuk menghilangkan boilerplate code berulang dalam pembuatan RESTful API di Go. Menghadirkan penanganan request type-safe tanpa perlu memanggil json.NewDecoder secara manual, serta auto-generating dokumentasi OpenAPI 3.1 yang selalu sinkron dengan kode Go Anda.
Tambahkan HazartGo sebagai dependensi ke proyek Go Anda:
go get github.com/misbakhul29/hazartgo
Install CLI Tool HazartGo ke dalam sistem Anda secara global:
go install github.com/misbakhul29/hazartgo/cmd/hazart@latest
Contoh sederhana membuat Web API lengkap dengan Model, AutoCRUD Engine, dan Swagger Docs:
package main import ( "log" hazart "github.com/misbakhul29/hazartgo" "github.com/misbakhul29/hazartgo/crud" "github.com/misbakhul29/hazartgo/middleware" ) // 1. Definisi Struct Model DB & OpenAPI Specs type User struct { ID string `json:"id" path:"id" doc:"User Unique ID"` Name string `json:"name" validate:"required" doc:"User Full Name"` Email string `json:"email" validate:"required,email" doc:"User Email Address"` } // 2. Controller dengan AutoCRUD Engine type UserController struct{} func (uc *UserController) RegisterRoutes(g *hazart.Group) { // Role authorization protection g.Use(middleware.RequireRole("admin")) // Auto Generate 5 REST Endpoints (GET, GET/:id, POST, PUT/:id, DELETE/:id) crud.AutoCRUD[User](g, "") } func main() { app := hazart.New(hazart.Config{ Title: "HazartGo Showcase API", Description: "High Performance REST API Framework", Version: "1.0.0", }) // Middlewares app.Use(middleware.Logger()) app.Use(middleware.Recovery()) app.Use(middleware.CORS()) // Mount Controller app.MountController("/api/v1/users", &UserController{}) log.Println("⚡ Server running on http://localhost:8080") log.Println("📚 Swagger UI Docs on http://localhost:8080/docs") app.Listen(":8080") }
http://localhost:8080/docs dan spesifikasi OpenAPI 3.1 JSON di http://localhost:8080/openapi.json.
Daftar perintah CLI (hazart) untuk mempercepat pembuatan modul backend:
| Perintah | Alias | Deskripsi |
|---|---|---|
hazart init <project> |
- | Inisialisasi proyek baru dengan struktur folder models, repositories, controllers, middleware, go.mod, & main.go |
hazart make:resource <Name> |
resource |
Generate 1 paket lengkap: Model + Repository Thread-Safe + AutoCRUD Controller |
hazart make:controller <Name> |
controller |
Generate Controller struct & RouteMeta handler |
hazart make:model <Name> |
model |
Generate DB Model struct dengan tag validation & OpenAPI spec |
hazart make:repository <Name> |
repository |
Generate Repository interface & memory store implementation |
hazart make:middleware <Name> |
middleware |
Generate custom MiddlewareFunc handler |
hazart make:auth |
auth |
Scaffold AuthController berbasis hazart/jwt |
hazart update |
- | Otomatis upgrade Hazart CLI & pustaka hazartgo di proyek ke rilis @latest |
Upgrade CLI dan dependensi proyek HazartGo ke versi rilis terbaru secara otomatis:
hazart update
AutoCRUD Engine otomatis mendaftarkan 5 REST API CRUD endpoints (GET list, GET by ID, POST create, PUT update, DELETE) hanya dari 1 struct Model:
func (c *ProductController) RegisterRoutes(g *hazart.Group) { // Otomatis generate 5 endpoints REST API CRUD: // GET /products, GET /products/:id, POST /products, PUT /products/:id, DELETE /products/:id crud.AutoCRUD[models.Product](g, "", c.repo) }
HazartGo menghasilkan spesifikasi OpenAPI 3.1 secara langsung dari tipe data Go tanpa membutuhkan generator eksternal:
app.OpenAPI.AddSecurityScheme(hazart.SecurityBearerAuth, openapi.SecurityScheme{
Type: "http",
Scheme: "bearer",
BearerFormat: "JWT",
})
Mengelola penandatanganan dan verifikasi token JWT berbasis HMAC-SHA256 secara ringkas:
import "github.com/misbakhul29/hazartgo/jwt" jwtManager := jwt.New("my-secret-key") // 1. Generate JWT Token token, err := jwtManager.Sign(jwt.MapClaims{ "sub": "usr_123", "name": "Budi Santoso", "roles": []string{"admin"}, }, 24*time.Hour) // 2. Verifikasi Token claims, err := jwtManager.Verify(token)
Memproteksi rute berdasarkan Role atau Permission pengguna secara deklaratif:
// Require specific role g.Use(middleware.RequireRole("admin", "editor")) // Require specific permission g.Use(middleware.RequirePermission("products:write"))
Helper ctx.Success dan ctx.Error memastikan format JSON response konsisten di seluruh aplikasi:
// Success Response ctx.Success(http.StatusOK, userObj, "User data retrieved successfully") // Error Response (RFC 7807) ctx.Error(http.StatusBadRequest, "Invalid parameter", map[string]string{"field": "email"})
Uji format JSON Response terstruktur yang dihasilkan oleh HazartGo:
// Klik 'Send Request' untuk melihat simulasi output JSON
| Field | Tipe | Keterangan |
|---|---|---|
Title |
string |
Judul utama API pada dokumentasi Swagger UI |
Version |
string |
Versi rilis API (misal: 1.0.0) |
Description |
string |
Deskripsi rincian layanan API |
Contact |
*openapi.Contact |
Informasi kontak pengembang API (Name, Email, URL) |
License |
*openapi.License |
Informasi lisensi software API (Name, URL) |