Swift Rest Api etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Swift Rest Api etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Aralık 2020 Pazar

REST API'lerini Swift'de kullanmanın en iyi yolu(Alamofire Kullanılmamıştır)

Size bir API kullanırken en iyi uygulamaları göstereceğim.Bu yazımızda  Alamofire gibi bir kitaplık kullanmayacağız çünkü API çağrısı gibi basit eylemler için harici bir kitaplığa ihtiyacınız yoktur.

Alamofire kullanışlıdır ve her şeyi daha hızlı hale getirir ancak sahip olduğu tüm özelliklere her zaman ihtiyaç duymazsınız ve projenize çok fazla bağımlılık eklemek istemezsiniz.

Bazı temel API çağrılarıyla uğraşmanız gerektiğinde, yerleşik URLSession işi halledecektir.

Bir API'den JSON verilerini almak için basit bir istekte bulunarak başlayalım.  Bu isteği  URLSession ile oluşturabiliriz.

İşte kod:


Öncelikle URL'mizi bir String ile oluşturuyoruz, ardından bir tamamlama işleyicisinde gerekirse verileri, yanıtı ve hataları döndürmek için URLSession kullanıyoruz.(data, res, err)

Ardından veriyi oluşturduğumuz bir yapıya dönüştürüyoruz. Bu yapı, Codable'dan miras alır ve temelde, JSON'un tüm özelliklerini türleriyle birlikte içerir. Ve iç içe geçmiş her JSON için, verilerini özelliklerin adı ve türleriyle açıklamak için başka bir yapı oluşturmanız gerekir. Decoder kullanılarak verileri çözümlemekteyiz.

Bu kod çalışıyor ancak bir sorunu vardır.

Verileri bir Tablo Görünümünde görüntülememiz gerekirse, URLSession sona erdiğinde verileri yeniden yüklemem gerekir. Ancak bizim kodumuzla yapılamaz. Verileri yeniden yüklemeden önce URLSession'ın bitmesini bekleyemeyiz ve 42. satırdaki verileri yeniden yükleyemeyiz, bu bir hata verecektir.

Bir tamamlama işleyicisi eklemeliyiz.


Daha başarılı şekilde çalışacaktır.


JSON'ı bir API'ye gönderme



Önce URL'mizi oluşturuyoruz, ardından URLRequest ile bir HTTP Talebi oluşturuyoruz ve bunun bir POST isteği olmasını istediğimizi belirtiyoruz.
Daha sonra (göndermek istediğimiz verilerle) bir map oluşturup JSON verisine dönüştürüyoruz.
Daha sonra bu isteği göndermek için URLSession'ı kullanırız. ve http kodununun response code döndürürüz!

Multiple Request
Bütün requestleri tek seferde yollamamız , uygulamanızı yavaşlatacağı ve bir UX tasarımcısı ve geliştirici açısından bakıldığında, tek bir sayfada görüntülenemeyecek kadar fazla veriye sahip olmak hiçbir zaman iyi değildir.
Ancak bunu yapmanın etkili bir yolu var. Kodun geri kalanını çalıştırmadan önce tüm istekleri birlikte yapabilir ve hepsinin bitmesini bekleyebilirsiniz.
Bütün requestlerin bittiği bilgisini DispatchGroup ile öğrenmekteyiz.