3.5 KiB
3.5 KiB
Handler Generator CLI Tool
CLI tool untuk generate handler baru secara otomatis dengan swagger documentation.
Cara Penggunaan
Windows
# Buka terminal di folder tools
generate.bat <nama-handler> [methods]
# Contoh:
generate.bat user get post
generate.bat product get post put delete
Linux/Mac
# Buka terminal di folder tools
./generate.sh <nama-handler> [methods]
# Contoh:
./generate.sh user get post
./generate.sh product get post put delete
Langsung dengan Go
# Dari root project
go run tools/generate-handler.go <nama-handler> [methods]
# Contoh:
go run tools/generate-handler.go user get post put delete
go run tools/generate-handler.go product get post
Method yang Tersedia
get- GET endpoint untuk list datapost- POST endpoint untuk create dataput- PUT endpoint untuk update datadelete- DELETE endpoint untuk delete data
File yang Dibuat Otomatis
- Handler:
internal/handlers/<nama>/<nama>.go - Models:
internal/models/<nama>/<nama>.go - Routes: Update otomatis di
internal/routes/v1/routes.go
- :
Nama Directori - .go:
Nama file class
Contoh Penggunaan
1. Generate Handler dengan GET dan POST
./generate.sh user get post
2. Generate Handler dengan semua method
./generate.sh product get post put delete
3. Generate Handler dengan custom method
./generate.sh order get post delete
Langkah Setelah Generate
- Jalankan swagger generator:
swag init -g cmd/api/main.go
- Jalankan aplikasi:
go run cmd/api/main.go
- Akses swagger UI:
http://localhost:8080/swagger/index.html
Struktur File yang Dibuat
Handler File (internal/handlers/<nama>/<nama>.go)
- Struct handler
- Constructor function
- Endpoint methods dengan swagger documentation
- Error handling
- Import models dari
api-service/internal/models/<nama>
Model File (internal/models/<nama>/<nama>.go)
- Request models
- Response models
- Error response models
- Package name sesuai dengan nama handler
Routes Update
- Otomatis menambahkan routes ke
/api/v1/<nama-plural> - Support parameter ID untuk endpoint spesifik
- Menggunakan componentHandlers untuk handler baru
Contoh Output
Untuk command: ./generate.sh user get post
Handler yang dibuat:
GET /api/v1/users- List usersGET /api/v1/users/:id- Get user by IDPOST /api/v1/users- Create new user
Struktur Direktori:
internal/
├── handlers/
│ └── user/
│ └── user.go
├── models/
│ └── user/
│ └── user.go
Swagger Documentation
Semua endpoint otomatis memiliki swagger documentation yang bisa diakses di:
http://localhost:8080/swagger/index.html
Tips Penggunaan
- Nama Handler: Gunakan nama singular (user, product, order)
- Method: Pilih method sesuai kebutuhan CRUD
- Custom Fields: Edit file models yang dibuat untuk menambahkan custom fields
- Service Layer: Tambahkan service layer untuk business logic yang kompleks
- Repository Layer: Tambahkan repository layer untuk database operations
Troubleshooting
Jika generate gagal:
- Pastikan berada di root project
- Pastikan file
internal/routes/v1/routes.goada - Pastikan permission untuk menulis file
Jika routes tidak muncul:
- Cek file
internal/routes/v1/routes.gountuk duplikasi nama handler - Pastikan tidak ada nama handler yang sama dengan yang sudah ada