Dispatcher: JSON Tabanlı Modüler Go Framework

Dispatcher: JSON Tabanlı Modüler Go Framework

Dispatcher, modern API tasarımında esneklik, hız ve basitliği bir araya getiren bir Go framework’tür.

Kurumsal yapılarda kullanılan “departman” ve “işlem” kavramlarını merkeze alan yapısıyla, API’lerinizi anlamlı, ölçeklenebilir ve düzenli bir biçimde kurgulamanızı sağlar.

GoDispatcher — JSON Tabanlı Go Web Framework’ü

GitHub reposu


🎯 Giriş

Günümüzde Go dünyasında birçok minimalist web framework bulunuyor. GoDispatcher (a.k.a. 'dispatcher'), JSON tabanlı API’ler geliştirmek isteyenler için type-safe, middleware tabanlı, bölümsel (department-based) mimari desteği sunan bir çözüm.

Küçük projelerden büyük ölçekli enterprise sistemlere kadar geniş yelpazede HTTP servisleri kolayca geliştirmeyi hedefler.


🛠️ Başlıca Özellikler

  • Type-Safe Go’nun generics mekanizmasını kullanarak compile-time tip denetimi sağlar.
  • Middleware Sistemi Kolayca genişletilebilir middleware desteği (doğrulama, oturum kontrolü vs.).
  • Department Architecture Servislerinizi mantıksal bölümlere (“departments”) ayırarak sorumlulukları netleştirin.
  • Yerleşik Logging Tüm istek / yanıt otomatik olarak loglanır.
  • Otomatik API Dokümantasyonu Uygulama çalışırken
    /help
    endpoint’i ile dokümantasyon sunulur.
  • Güvenlik & Licence Doğrulama Token / licence kontrolü için entegre mekanizmalar mevcuttur.
  • Zincirleme Request (Chaining) Bir endpoint’in içinde başka işlemleri zincirleyerek çalıştırabilirsiniz.
  • Persistent Stream (TCP / NDJSON) HTTP + WebSocket alternatifi olarak sürekli bağlantı desteği sağlar (NDJSON üzerinden).

🚀 Hızlı Başlangıç

GO
// Örnek department içinden package department import ( "github.com/godispatcher/dispatcher/src/middleware" ) type HelloRequest struct { Name string `json:"name"` } type HelloResponse struct { Message string `json:"message"` } type HelloTransaction struct { middleware.Middleware[HelloRequest, HelloResponse] } func (t *HelloTransaction) SetSelfRunables() error { return nil } func (t *HelloTransaction) Transact() error { t.Response.Message = "Hello, " + t.Request.Name + "!" return nil }

Transaction kaydı:

GO
package department import "github.com/godispatcher/dispatcher/creator" func RegisterHello() { creator.NewTransaction[HelloTransaction, *HelloTransaction]( "Greeting", "hello", nil, nil, ) }

Ana uygulama:

GO
package main import ( "github.com/godispatcher/dispatcher/department" "github.com/godispatcher/dispatcher/server" "your-project/department" ) func main() { service := department.NewRegisteryDispatcher("8080") department.RegisterHello() server.ServJsonApiDoc() server.ServJsonApi(service) }

Bu yapı ile uygulama

/help
endpoint’i üzerinden otomatik dokümantasyon sunar ve JSON API çağrılarına hazır hale gelir.


📊 Mimari Şema


📊 Request / Response Formatları

Request

JSON
{ "department": "DepartmentName", "transaction": "transaction-name", "form": { "field1": "value1", "field2": "value2" }, "security": { "licence": "token-string" }, "options": { "security": { "licence_checker": true } }, "dispatchings": [ { "department": "OtherDept", "transaction": "other-trans" } ] }

Response (Success)

JSON
{ "department": "DepartmentName", "transaction": "transaction-name", "type": "Result", "output": { "result": { } } }

Response (Error)

JSON
{ "department": "DepartmentName", "transaction": "transaction-name", "type": "Error", "error": "Hata mesajı" }

✅ Avantajlar & Kullanım Alanları

  • Tip güvenli yapı ile runtime hatalarını minimize eder.
  • Modüler bazlı mimari ile yönetilebilir projeler.
  • Otomatik dokümantasyon.
  • Zincirleme isteklerle iş akışı tanımlayabilme.
  • Kalıcı bağlantı (stream) desteği.

Kullanım alanları:

  • Mikroservisler
  • JSON API’ler
  • Gerçek zamanlı stream servisleri
  • Backend sistemleri

🧱 Proje Yapısı

your-project/ ├── main.go ├── department/ │ ├── user/ │ │ ├── user.go │ │ └── register.go │ ├── product/ │ │ ├── product.go │ │ └── register.go │ └── auth/ │ ├── auth.go │ └── register.go ├── middleware/ │ └── custom.go └── model/ └── types.go

📝 Gelişmiş Kullanım & Özelleştirme

  • Özel Middleware: Token kontrolü, yetkilendirme gibi custom middleware’ler ekleyebilirsiniz.
  • Zincirleme İşlemler: Bir transaction içinde başka transaction’lar tetiklenebilir.
  • Stream API (NDJSON): Kalıcı bağlantı üzerinden veri akışı.
  • Güvenlik / Licence:
    document.Security.Licence
    kontrolü ile token veya lisans doğrulama.

📚 Kaynaklar

"GoDispatcher ile hızlı, güvenli ve ölçeklenebilir HTTP servisleri oluşturun!"