Laravel Rest Api 3.0: Tipli alanlar ve metriklere geçiş
Laravel Rest Api paketinin 3.0 sürümü yayımlandı. Gautier Deleglise tarafından geliştirilen paket, Eloquent modellerinizi tek bir resource sınıfı üzerinden REST API'ye dönüştürme fikrini koruyor; ancak habere göre bu sürümde paketin alt yapısının büyük bölümü yeniden yazıldı.
En belirgin değişiklik alan tanımlarında. 2.x sürümünde bir resource yalnızca kolon adlarını listeliyordu. 3.0'da ise Text, Integer, Number, Date, Enum ve Json gibi tipli alanlar tanımlanıyor. Paket bu tek tanımı doğrulama, filtreleme ve dokümantasyon dahil API'nin geri kalanında kullanıyor. Yani bir alanın tipini bir kez yazmak, paketin birçok yerinde aynı bilgiyi tekrar etme ihtiyacını ortadan kaldırıyor.
Paketin kendi dokümantasyon üreticisi kaldırılmış durumda. Makalede belirtildiğine göre 3.0 artık Scramble ile entegre çalışıyor. Scramble kurulduğunda /docs/api adresi her resource'un her endpoint'ini tipli gövdesi, alan kuralları, istek örnekleri ve hata yanıtlarıyla birlikte belgeliyor. Paketin test paketi bu istek örneklerini API'ye gönderip yanıtları üretilen dokümana göre doğruluyor; dokümanla API çelişirse test başarısız oluyor.
3.0'ın bir diğer yeniliği metrikler. Bir resource üzerinde metrik tanımladığınızda controller kodu yazmadan kendi rotası oluşuyor. Value, Trend, Partition, Progress ve Table tipleri sayımları, toplamları, ortalamaları, medyanları ve yüzdelikleri kapsıyor. Tarih aralıkları, saat dilimleri, önceki dönemle karşılaştırma ve sonuç önbelleği de destekleniyor. Habere göre bir metrik yalnızca mevcut kullanıcının görmeye yetkili olduğu satırları sayıyor; istemci aynı filtrelerle sonucu daha da daraltabiliyor.
Ayrıca action, mutate, destroy, restore ve force destroy işlemleri artık çalışmadan önce kullanıcıdan onay isteyebiliyor. Endpoint 428 durumu, mesajınız ve imzalı bir token döndürüyor; istemci aynı isteği token ile tekrar gönderdiğinde işlem çalışıyor. Oturum veya ek bir endpoint gerekmiyor. Sürüm PHP 8.3+ ve Laravel 13.30+ istiyor; Laravel 12 kullanan uygulamaların 2.x'te kalması öneriliyor.
Kaynak: Laravel News