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.

GoDispatcher — JSON Tabanlı Go Web Framework’ü

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.

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!"