Model ve Web Service

Merhabalar arkadaşlar bugün sizlerle paylaşmak istediğim konu Swift projelerimizde sıkça kullandığımız Web Api den veri çekmeyi ve bu veriyi, yani JSON datasını parse edip kullanmayı göstermek istiyorum.

Web api :

“https://api.themoviedb.org/3/movie/popular?api_key=07a5c023845c9ca82cd83153c9c21fe2"

Öncelikle bu url’den Json Datasını daha net anlayabilmek için codebeautify.org adlı siteden yararlanmamız faydalı olur.

https://codebeautify.org

Uygulamamız için çekmek istediğimiz verilerden oluşacak model tasarlamamız gerekiyor.

MoviesData adında struct oluşturup Decodable protokolünü kullandık.

Verileri parse edebilmek için bu modelde oluşturulan movies dizisine tanımlı Movie adında struct oluşturuyoruz ve içerisine api de bulunan Json datamız ile aynı isimde constant yada değişkenleri tanımlıyoruz.

Eğer kullanmak istediğimiz değişkenler ile api içerisindeki isimler farklı enum içerisinde case yapıyoruz.

Şimdi bu web apiden json datasını çekmek için WebService oluşturalım.

Yeni bir swift dosyası açıp ApiService adında bir sınıf oluşturmamız gerekiyor.Daha sonra bu ApiService sınıfını dilediğimiz yerden çağırıp kullanabiliriz.

Completion handler bloğu kullanarak verileri internetten çekelim.Peki neden completion handler kullanıyoruz diye sorabilirsiniz.

İnternetten veri çekerken bu verilerin yüklenmesi zaman alabilir completion handler bloğu sayesinde ise blok içerisindeki kodlar ile birlikte arka planda uygulamadaki diğer kodlarımızda çalışır ve bu uygulamamızın daha hızlı çalışmasına olanak verir.

Fonksiyonumuzu @escaping elemanı kullanarak oluşturduk bu elaman fonksiyonun arka planda çalışmasına olanak verir.

Fonksiyonumuzun devamında ise yukarda belirttiğimiz şekilde completion handler kullanarak dataTask oluşturduk;

Burada gelen datayı kodumuzda kullanmak için decode işlemi yapıyoruz.

Dikkat etmemiz gereken husus datayı çekerken herhangi olumsuz senaryoya karşı do-catch bloğu kullanmak olmalıdır.

Fonksiyon içerisinde olan olay sıralaması özetle ;

1- Apimize ait olan url yi String olarak tanımladık.

2- dataTask adında completion oluşturarak veriyi bu url den parse ettik.

3-MoviesData sınıfında oluşturduğumuz modeldeki nesneleri do-catch bloğu ile uygulamamıza çektik.

Artık bu Json verimizi uygulamamızın herhangi biryerinde çağırıp kullanabiliriz.

Şekilde görüldüğü gibi ApiService() sınıfını çağırıp kullanmamıza olanak veriyor.Projenin tamamlanmış hali github hesabımda filmDocumentary repository’ si içerisinde bulabilirsiniz.

Bir sonraki yazımda görüşmek üzere hepinize mutlu sağlıklı günler dileğiyle..

iOS Developer