API versioning, birçok yazılımcının konuştuğu ancak çoğunun acı bir şekilde uyguladığı bir konudur.
Birçok kontrolör.
Yinelenen mantık.
Gizli koşullar.
Bozuk istemciler.
Laravel Query Gate v1.2.0, yeni bir yaklaşım sunuyor:
API davranışınızı sorgu katmanında sürümlendirin.
Ekstra kod yok.
Sihir yok.
Sürpriz yok.
🎯 Geleneksel API Sürümlemenin Problemi
Çoğu API bu şekilde evrim geçirir:
Filtreleri değiştirirsiniz.
Alanları kaldırırsınız.
Sıralama eklersiniz.
Bazı entegrasyonları bozarsınız.
/v1/users ve /v2/users kullansanız bile, gerçek problem kalır:
👉 Sorgu davranışı değişiklikleri, kod tabanında dağınık bir şekilde yer alır.
Laravel Query Gate v1.2.0 bunu merkezi hale getiriyor.
🧠 Temel Fikir
Müşteriler istedikleri sürümü tanımlar:
X-Query-Version: 2026-01-05
Aynı uç noktası güvenle davranışını uyarlıyor.
GET /query/users
Yinelenen kontrolör yok.
Hizmetlerde dallanma mantığı yok.
🧾 Yerleşik Değişiklik Günlüğü (Evet, Gerçekten)
Her sürümlü sorgu otomatik olarak bir değişiklik günlüğü uç noktası bilgisi sağlar:
GET /query/users/__changelog
Örnek yanıt:
{
"model": "App\\Models\\User",
"alias": "users",
"default": "2026-01-06",
"active": "2026-01-05",
"versions": [
{
"version": "2026-01-05",
"changes": []
},
{
"version": "2026-01-06",
"changes": [
"Removed filter: created_at",
"Removed operator: created_at.gte",
"Removed operator: created_at.lte",
"Removed operator: created_at.between",
"Removed select: created_at",
"Added sort: name",
"Added sort: email",
"Added sort: created_at"
]
}
]
}
Bu demektir ki:
Hızlı API şeffaflığı
Daha kolay hata ayıklama
Frontend ve entegrasyonlarla net iletişim
🧩 Bunu Gerçekleştiren Kod
Laravel Query Gate v1.2.0 kullanarak gerçek bir örnek:
public static function queryGate(): QueryGate
{
return QueryGate::make()
->alias('users')
->version('2026-01-05', function (QueryGate $qg) {
return $qg->filters([
'name' => 'string',
'email' => 'email',
'created_at' => 'date',
])
->allowedFilters([
'name' => ['like'],
'email' => ['eq', 'like'],
'created_at' => ['gte', 'lte', 'between'],
])
->select(['id', 'name', 'email', 'created_at']);
})
->version('2026-01-06', function (QueryGate $qg) {
return $qg->filters([
'name' => 'string',
'email' => 'email',
])
->allowedFilters([
'name' => ['like'],
'email' => ['eq', 'like'],
])
->sorts(['name', 'email', 'created_at'])
->select(['id', 'name', 'email']);
});
}
Sürümler arasındaki değişiklikler:
created_at filtresi kaldırıldı.
Operatörler güvenli bir şekilde kaldırıldı.
Sıralama eklendi.
Seçim alanları ayarlandı.
Eski istemciler çalışmaya devam ediyor.
Yeni istemciler iyileştirmeler elde ediyor.
💡 Bunun Gücü Neden?
Laravel Query Gate v1.2.0, size sunar:
Açık API sözleşmeleri her sürüm için
Endişe duymadan güvenli evrim
Sorgular için tek bir doğruluk kaynağı
Daha az insan hatası
Daha temiz kod tabanları
API evrimini birinci sınıf bir konu olarak ele alıyor, düşünülmemiş bir konu değil.
🌐 Daha Fazla Bilgi Edinin
Bu sadece özelliklerden biri.
👉 https://laravelquerygate.com
Bakım gerektiren API’lerle ilgileniyorsanız;
Öngörülebilir davranış;
Laravel’e özgü çözümler;
Kendinizi evinizde hissedeceksiniz.
Geri bildirimler, fikirler ve gerçek dünyada karşılaştığınız durumlar her zaman hoş karşılanır 🚀
Kaynak: Orijinal Makale


