Swift ‘in Server İskeleti : Vapor Framework Nedir ?

Nida Mehteroğlu
HardwareAndro
Published in
4 min readAug 18, 2020

Herkese merhabalar ilk yazımda Swift ile yazılmış olan açık kaynak koduna sahip Vapor framework’ünü anlatacağım. Vapor, Swift için RESTful API’ler ve web uygulamaları oluşturmanızı sağlayan bir web frameworküdür.

Vapor framework’ünü kullanmak için etkin olan 3 kriter dikkat çekiyor :

- Topluluk: Vapor’ın discord uygulaması üzerinden size herhangi bir sorunuzda yardımcı olabilecek ve yeni ihtiyaçları kodlamaya hevesli şahane bir topluluğu var,

- Dökümantasyon: Hızlıca ve yolunuzu kaybetmeden ilerlemenizi sağlayacak bir dökümantasyonu olması ise projeye adım atarken çok önemli.

- Entegrasyon & Kütüphaneler: İhtiyaca yönelik entegrasyonları desteklemesi ya da sizin Swift ile o ihtiyaca yönelik geliştirmeyi/entegrasyonu yapabilmeniz server projenizin sürdürülebilmesi için çok önemli.

Bu anlamda, Vapor framework’ünde çalışabilen JWT, Google Cloud Provider, Mongo Kitten, Fluent gibi topluluk ve Vapor geliştiricileri tarafından yazılmış çok fazla sayıda Swift kütüphanesi mevcut ve geliştirmeye devam ediyorlar.

Vapor Framework ‘ü MacOS ve Ubuntu işletim sistemi üzerinde çalışır. Biz burada Ubuntu işletim sistemini kullandık.

Swift’in desteklediği Linux dağıtımları:

· Ubuntu 16.04, 18.04 veya 20.04 (64 bit)

· CentOS 7, 8

· Amazon Linux 2

Linu4x kurulum aşamalarını kısaca anlatmak gerekirse ;

  • Vapor frameworkünü kullanabilmek için önce Swift derleyicisini indirmek gerekiyor , sistemimize uygun olan versiyonu indirerek işe başlıyoruz.
  • Swift’e terminalden kolayca erişebilmek için bash.bashrc dosyasına
export PATH=/usr/local/swift/usr/bin:”${PATH}”;

ekliyoruz daha sonra terminalden swift -version komutunu çalıştırarak çalışıp çalışmadığını kontrol ediyoruz.

Terminal Ekranı
  • Terminali açarak Vapor ‘ı indirme işlemini başlatıyoruz.

Vapor Faremwork’ünü indirdik ve vapor — help komutu kullanarak kontrol ediyoruz.

Vapor da proje oluşturmak istediğimiz de karşımıza iki şema çıkıyor . Run ve App şeması, Run şemasını kullandığımızda projemiz çalışmaya başlayacak. Internet browser üzerinden adres olarak localhost :8080/ yazıyoruz ve karşımıza uygulamamızın ilk cevabı çıkıyor.

Run şeması çalıştığında ilk olarak main.swift’teki kodlar tetiklenir, burada uygulamaya ait bir kopya oluşur. Uygulama kopyası oluşturulup başlatıldıktan sonra configure.swift dosyasındaki kodlar çalıştırılır, burada veritabanı bağlantıları, middleware ve router gibi uygulamaya register (kayıtlı) olması ve başlatılması gereken servislerin kodları yazılır. Configure dosyasındaki tanımlara ait kodlar çalıştıktan sonra boot.swift üzerindeki kodları çalıştırılır ve uygulama başlamış olur. Uygulamanın istekleri kabul edeceği noktalar (end point) routes.swift dosyasında tanımlanır.

Vapor projeleri yapı olarak SPM klasör yapısı üzerine kurulmuştur.

SPM klasör yapısı

Vapor uygulamanız büyüdükçe, routes üzerindeki endpoint tanımları Oldukça karmaşık bir hal alabilir. Bunu aşmanın en iyi yolu, uygulamadaki mantıksal kısımlara ait kodları Controller ve Service’lere, isteklere ait tanımları ise Request ve Response’ları içeren DTO sınıflarına almak olacaktır.

Aşağıda mimari uygulamamıza gelen herhangi bir isteğin geçeceği örnek bir rotayı görüyorsunuz.

· İstek (Request): Hedef url’e ve içeriğe sahip istek paketi..

· Ara Katman (Middleware): Tanımlı isteklerin takibini ve header bilgilerinin (dil bilgisi, client uygulama versiyonu vb.) ya da içeriklerini kontrolünü yapan katman. Eğer isteğe cevap vermek servis için öncesinde kullanıcının giriş yaptığını kontrol etme gibi ihtiyaçlarını varsa JWTMiddleware katmanı yeterli olacaktır.

· Controller: İstekleri karşılayan, validasyonu gerçekleştiren ve ilgili akışa göre bir ya da birden fazla servis çağrısını yaptıktan sonra cevabı döndüren metodu barındıran sınıf/katman.

· Servis (Service): Bütün mantıksal kısımların tutulduğu, veritabanı ve 3. parti API’lar ile konuşan kod Parçaları servis kısmında yer alır.

Vapor Framework ‘te basit bir örnek yapalım.

Routes.swift dosyası gelen request paketlerini yönetmeyi sağlar. Örnekte olduğu gibi GET metoduyla gelen isteklere karşı response üretmeye yarar.

Örnekte “Hello” isteğine karşı “ Hello World !” çıktısı verilmiştir.

Yazdığımız örneğin localhost :8080/hello çıktısı böyle görülmektedir.

Web geliştirmeye yeni başlayan biriyseniz, ancak Swift ile bir süredir çalışıyorsanız, Vapor ile sağlam, tam özellikli web uygulamaları ve web API’leri oluşturmanın kolay olduğunu göreceksiniz.

--

--