SHFT Rails API Boilerplate
SHFT Rails boilerplate ile daha yönetilebilir bir yapı oluşturarak zaman kazanın.
April 7, 2023
Türkçe
SHFT Rails API Boilerplate Nedir? Ne İşe Yarar?
Ruby on Rails’in kendi içinde getirdiği yapının büyük uygulamalarda ortaya çıkardığı karmaşıklığın önüne geçmek amacıyla birbirinden ayrı ama birbiri ile veri akışı sağlayan özel uygulama katmanları inşa ettik. Bu katmanlar sayesinde test edilebilirlik ve yönetilebilirlik açısından yeni bir boyut kazandırmış olduk.
Öncelikle Rails API Boilerplate, Rails ile geliştirebileceğimiz API uygulamaları için kendi içinde Authentication, Service Layer, Contract Layer, Operation Layer, Open-API, Searching ve Pagination gibi çözümleri içinde getiren bir yapıdır. Bu yapının elemanlarından kısaca bahsedelim.
Service Layer: Uygulamamızdaki tüm iş mantıklarının (business-logic) yer aldığı katmandır. Bu katmanın amacı, uygulamamızın iş mantığını bulundurmak ve yürütmektir. Bu katmandaki sınıflar sadece Success ve Failure döndürürler. Success döndürdükleri zaman işlem başarılıdır, Failure döndürdükleri zaman ise işlem başarısızdır. Bu sayede hata fırlatmadan işlem sonucunu döndürürler.
Contract Layer: Client tarafından gönderilen tüm parametrelerin validasyonunu yapar. Bu sayede uygulamamıza gelen parametrelerin doğruluğunu kontrol ederiz ve uygulama içinde type-safe bir şekilde parametreleri kullanabiliriz.
Operation Layer: Bu katmanın amacı, Contract Layer’dan Success döndüğü zaman parametreleri Service Layer’a göndermek ve Service Layer’dan dönen sonucu client tarafına iletmektedir. Bu sayede uygulamamızın iş mantığını ve iş kurallarını tutan Service Layer’ı diğer katmanlardan soyutlamış oluruz.
Yukarıda bahsettiğimiz katmanların çalışma mantığını daha iyi anlamak için aşağıdaki diagramı inceleyebilirsiniz.
SHFT Rails API Boilerplate Diagram
Authentication: Uygulamamızın Authentication işlemlerini yönetmek için Devise ve Doorkeeper gemleri kullanılmıştır. Devise ile uygulamamızın Authentication işlemlerini yönetirken, Doorkeeper ile ise uygulamamızın Token tabanlı Authentication işlemlerini yönetiriz. Bu sayede Devise ile yönettiğimiz Authentication işlemlerini API üzerinden de kullanabiliriz.
Open-API: Uygulamamızın API dokümantasyonunu oluşturmak için Swagger Blocks gemi kullanılmıştır. Bu gem ile uygulamamızın API dokümantasyonunu oluşturup Swagger UI üzerinden inceleyebiliriz.
Searching: Uygulamamızın API üzerinden arama işlemlerini yönetmek için Ransack gemi kullanılmıştır. Ransack için gerekli olan parametrelerin doğruluğunu kontrol etmek için QueryObject sınıfını kullanıyoruz. Bu sayede uygulamamızın API üzerinden arama işlemlerini yönetirken, parametrelerin doğruluğunu kontrol edebiliriz. bu sınıfa erişmek için Controller’da query_object metodunu kullanabiliriz.
Pagination: Uygulamamızın API üzerinden sayfalama (pagination) işlemlerini yönetmek için Kaminari gemi kullanılmıştır. Kaminari için gerekli olan parametrelerin doğruluğunu kontrol etmek için PaginationObject sınıfını kullanıyoruz. Bu sayede uygulamamızın API üzerinden sayfalama işlemlerini yönetirken, parametrelerin doğruluğunu kontrol edebiliriz. Bu sınıfa erişmek için Controller’da pagination_object metodunu kullanabilirsiniz.
Sonuç
SHFT Rails API Boilerplate ile ilgili temel konulardan, kullanımlardan ve örneklerden bahsetmeye çalıştık. Şu an Github’da 50’den fazla star almış open-source bir projedir. Uygulamamızı kullanmak yada katkıda bulunmak isterseniz buraya tıklayabilirsiniz.
Gelecek yazılarda görüşmek dileğiyle, teşekkürler 🙂
Ruby
Ruby On Rails
Boilerplate
Backend Development
Nejdet Kadir Bektaş
Back-End Lead