Alamofire: یہ کیا ہے، HTTP کلائنٹ کے افعال اور ترقی میں استعمال

مصنف: IT Sectr اشاعت: 2026-05-04 مطالعے کا وقت: 8 منٹ

Alamofire ایک HTTP کلائنٹ ہے جو iOS، macOS، tvOS اور watchOS کے لیے Swift زبان میں لکھا گیا ہے۔ یہ لائبریری پیرامیٹر انکوڈنگ، جوابات کی تصدیق اور ڈیٹا سیریلائزیشن کے کاموں کو خودکار کرتی ہے۔ Alamofire GitHub ذخیرے کے مطابق، یہ پروجیکٹ دنیا بھر میں 40,000 سے زیادہ ایپلیکیشنز میں استعمال ہوتا ہے۔ Alamofire کو ایپل ایکو سسٹم میں نیٹ ورکنگ کا ڈی فیکٹو معیار سمجھا جاتا ہے۔

اہم نکات

  • Alamofire — ایپل پلیٹ فارمز کے لیے Swift میں اوپن سورس HTTP کلائنٹ
  • سپورٹ تمام HTTP طریقوں، URL پیرامیٹرز، درخواست باڈی اور ملٹی پارٹ اپ لوڈ کے لیے
  • تصدیق اسٹیٹس کوڈ اور مواد کے ذریعے جوابات کی خودکار خرابی کے انتظام کے ساتھ
  • سیشن کا انتظام URLSession کے ذریعے حسب ضرور ترتیبات اور انٹرسیپٹرز کے ساتھ
  • انضمام Codable، Combine اور Swift Concurrency کے ساتھ غیر مطابقت پذیر پروسیسنگ کے لیے

Alamofire کیا ہے؟

Alamofire ایپل پلیٹ فارمز پر HTTP درخواستوں کے ساتھ کام کرنے کے لیے ایک لائبریری ہے، جو مکمل طور پر Swift میں لکھی گئی ہے۔ ترقی کا آغاز 2014 میں Objective-C لائبریری AFNetworking کے متبادل کے طور پر ہوا اور یہ جلد ہی iOS کمیونٹی میں نیٹ ورکنگ کا معیار بن گیا۔

یہ لائبریری سسٹم فریم ورک URLSession کے اوپر بنائی گئی ہے، جو اس کے نچلے درجے کے API کو مختصر طریقہ کار کی زنجیروں میں تبدیل کرتی ہے۔ Alamofire URLSession کی تمام خصوصیات کو سپورٹ کرتا ہے: پس منظر کے سیشن، درخواست انٹرسیپٹرز، SSL سرٹیفکیٹس اور جوابات کی سیریلائزیشن کے متعدد طریقے۔

Swift Package Index کے مطابق، Alamofire GitHub پر 45,000 سے زیادہ ستاروں کے ساتھ سب سے مشہور Swift پیکیجز میں سے ایک ہے۔ یہ لائبریری iOS 10+، macOS 10.12+، tvOS 10+ اور watchOS 3+ کے ساتھ مطابقت رکھتی ہے۔

براہ راست URLSession استعمال کرنے کے مقابلے میں Alamofire کا بنیادی فائدہ بوائلر پلیٹ کوڈ کی کمی ہے۔ ایک AF.request کال 15–20 لائنوں کے دستی URLSession ترتیب، جواب کی پروسیسنگ اور ڈیٹا ڈی کوڈنگ کی جگہ لے لیتی ہے۔ ایک ہی وقت میں، لائبریری حسب ضرورت سیشنز اور ایکسٹینشنز کے ذریعے حسب ضرورت منظرناموں کے لیے مکمل لچک برقرار رکھتی ہے۔

Alamofire کی اہم خصوصیات

Alamofire نیٹ ورکنگ کے افعال کی ایک وسیع رینج فراہم کرتا ہے جو زیادہ تر موبائل ڈویلپمنٹ کے منظرناموں کا احاطہ کرتی ہے۔ اپنی ماڈیولر آرکیٹیکچر کی بدولت، ڈویلپرز کو صرف ضروری اجزاء شامل کرنے کی ضرورت ہوتی ہے۔

تمام HTTP طریقوں کی حمایت

HTTP طریقے GET، POST، PUT، PATCH، DELETE، HEAD، OPTIONS اور TRACE ایک یکساں API کے ذریعے نافذ کیے گئے ہیں۔ ہر طریقہ درخواست کے پیرامیٹرز، ہیڈر قبول کرتا ہے اور Result قسم کے طور پر جواب واپس کرتا ہے۔ ڈویلپر کو URLSession کو دستی طور پر ترتیب دینے کی ضرورت نہیں ہے — لائبریری فراہم کردہ دلائل کی بنیاد پر خود بخود ایسا کرتی ہے۔

سرور کے جوابات کی تصدیق

Alamofire میں جوابات کی تصدیق ایپلیکیشن کو ڈیٹا منتقل کرنے سے پہلے اسٹیٹس کوڈز اور جواب کے مواد کو چیک کرنے کی اجازت دیتی ہے۔ لائبریری بندشوں کے ذریعے حسب ضرورت تصدیق کی شرائط کو سپورٹ کرتی ہے، جو خرابی کے انتظام پر مکمل کنٹرول دیتی ہے۔ ڈیفالٹ طور پر، صرف 200–299 اسٹیٹس کوڈز چیک کیے جاتے ہیں۔

خودکار پیرامیٹر انکوڈنگ

پیرامیٹرز منتخب کردہ قسم کے مطابق خود بخود انکوڈ ہوتے ہیں: GET درخواستوں کے لیے URL انکوڈنگ اور POST کے لیے JSON انکوڈنگ۔ Alamofire پراپرٹی لسٹ انکوڈنگ اور ParameterEncoder پروٹوکول کے ذریعے حسب ضرورت انکوڈرز کو بھی سپورٹ کرتا ہے، جس سے فارمیٹ کو کسی بھی سرور کے مطابق ڈھالنے کی اجازت ملتی ہے۔

سیشن مینجمنٹ اور انٹرسیپٹرز

Alamofire میں سیشن ٹائم آؤٹ، SSL سرٹیفکیٹس، ڈیفالٹ HTTP ہیڈرز اور پراکسیز کو ترتیب دینے کی اجازت دیتا ہے۔ EventMonitor انٹرسیپٹرز درخواست کی زندگی کے چکر کے واقعات کو ٹریک کرنے کے قابل بناتے ہیں: تخلیق، بھیجنا، جواب وصول کرنا اور مکمل ہونا۔ یہ لاگنگ، تجزیہ اور پروڈکشن میں نیٹ ورک کے مسائل کو ڈیبگ کرنے کے لیے مفید ہے۔

Alamofire کیسے کام کرتا ہے؟

Alamofire ایک سیشن پر مبنی آرکیٹیکچر استعمال کرتا ہے جو URLSession انسٹنس اور نیٹ ورک کنفیگریشن کو سمیٹتا ہے۔ ہر درخواست ہینڈلرز کی ایک زنجیر سے گزرتی ہے: اڈیپٹرز، دوبارہ کوشش کی پالیسیاں، تصدیق کرنے والے اور سیریلائزر، جو لچک اور توسیع پذیری کو یقینی بناتے ہیں۔

سیشن اور درخواست کا ماڈل

سیشن آبجیکٹ ایپلیکیشن میں تمام نیٹ ورک درخواستوں کا انتظام کرتا ہے۔ یہ ٹائم آؤٹ، ڈیفالٹ ہیڈرز اور سرٹیفکیٹس پر مشتمل کنفیگریشن کے ساتھ بنایا جاتا ہے۔ ہر AF.request کال ایک DataRequest واپس کرتی ہے جسے بھیجنے سے پہلے تبدیل کیا جا سکتا ہے۔ Alamofire سیشن کے کمزور حوالوں کے ذریعے خود بخود برقرار رکھنے کے چکروں کو ہینڈل کرتا ہے، میموری لیک کو روکتا ہے۔

swift
import Alamofire

let session = Session(configuration: config)
session.request("https://api.example.com/users")
    .validate()
    .responseDecodable(of: [User].self) { response in
        switch response.result {
        case .success(let users):
            print("موصول \(users.count) صارفین")
        case .failure(let error):
            print("خرابی: \(error.localizedDescription)")
        }
    }

Alamofire کی تنصیب اور ترتیب

Alamofire کی تنصیب Swift Package Manager، CocoaPods یا Carthage کے ذریعے کی جاتی ہے۔ نئے پروجیکٹس کے لیے تجویز کردہ طریقہ SPM ہے، جو Xcode میں شامل ہے، کیونکہ اس کے لیے اضافی ٹولز کی ضرورت نہیں ہے اور انضمام چند کلکس میں ہو جاتا ہے۔

Swift Package Manager کے ذریعے

Xcode میں پیکیج شامل کرنا مینو File → Add Packages کے ذریعے کیا جاتا ہے۔ ذخیرے کا URL: https://github.com/Alamofire/Alamofire۔ ورژن کو تازہ ترین مستحکم ریلیز پر مقرر کرنے کی سفارش کی جاتی ہے۔ Alamofire معنوی ورژننگ کی پیروی کرتا ہے اور تمام اہم تبدیلیاں CHANGELOG میں دستاویز کی جاتی ہیں۔

CocoaPods کے ذریعے

CocoaPods موجودہ انفراسٹرکچر والے پروجیکٹس کے لیے ایک مقبول آپشن ہے۔ اپنے Podfile میں pod 'Alamofire' لائن شامل کریں اور pod install چلائیں۔ Alamofire کی کوئی بیرونی انحصار نہیں ہے، جو انضمام کو آسان بناتا ہے اور موجودہ پروجیکٹس میں ورژن کے تنازعات کو ختم کرتا ہے۔

Alamofire کے استعمال کی مثالیں

نیچے دی گئی مثالیں iOS ایپلیکیشنز میں Alamofire کے عام استعمال کے منظرناموں کو ظاہر کرتی ہیں: سادہ GET درخواستوں سے لے کر پیش رفت سے باخبر رہنے کے ساتھ فائل اپ لوڈ تک۔

GET درخواست اور JSON جواب

پیرامیٹرز اور جواب کو Codable ماڈل میں ڈی کوڈ کرنے والی ایک سادہ GET درخواست موبائل ایپلیکیشنز میں Alamofire کا سب سے عام استعمال ہے۔ پیرامیٹرز خود بخود انکوڈ ہوتے ہیں اور جواب JSONDecoder کے ذریعے ڈی کوڈ ہوتا ہے۔ کوڈ جامع اور پڑھنے کے قابل ہے۔

swift
struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

AF.request("https://jsonplaceholder.typicode.com/users",
               method: .get)
    .validate()
    .responseDecodable(of: [User].self) { response in
        switch response.result {
        case .success(let users):
            print("صارفین: \(users.count)")
        case .failure(let error):
            print("خرابی: \(error)")
        }
    }

JSON باڈی کے ساتھ POST درخواست

JSON باڈی کے ساتھ POST درخواست سرور پر وسائل بنانے کے لیے استعمال ہوتی ہے۔ Alamofire JSONParameterEncoder کے ذریعے منتقل کردہ آبجیکٹ کو خود بخود انکوڈ کرتا ہے، ڈویلپر کو دستی سیریلائزیشن سے بچاتا ہے۔ جواب اسی JSONDecoder کا استعمال کرتے ہوئے ڈیٹا ماڈل میں ڈی کوڈ ہوتا ہے۔

swift
let newUser = User(id: 1,
                     name: "علی خان",
                     email: "ivan@example.com")

AF.request("https://jsonplaceholder.typicode.com/users",
               method: .post,
               parameters: newUser,
               encoder: JSONParameterEncoder.default)
    .validate()
    .responseDecodable(of: User.self) { response in
        if let created = response.value {
            print("صارف بنایا گیا: \(created)")
        }
    }

میڈیا اپ لوڈ

Alamofire میں upload طریقہ فائلوں، ڈیٹا اور ملٹی پارٹ فارم اپ لوڈ کو سپورٹ کرتا ہے۔ لائبریری خود بخود پیش رفت کا انتظام کرتی ہے اور uploadProgress بندشوں کے ذریعے اپ لوڈ کی حالت کو ٹریک کرنے کی اجازت دیتی ہے، جو پیش رفت کے اشارے کو ظاہر کرنے کے لیے آسان ہے۔

swift
let imageData = UIImage(named: "photo")?.jpegData(compressionQuality: 0.8)

AF.upload(imageData,
           to: "https://api.example.com/upload")
    .uploadProgress { progress in
        print("پیش رفت: \(progress.fractionCompleted * 100)%")
    }
    .responseDecodable(of: UploadResponse.self) { response in
        print("اپ لوڈ مکمل")
    }

Alamofire میں خرابی کا انتظام اور تصدیق

Alamofire میں خرابی کا انتظام جواب کی تصدیق اور Result اقسام کے امتزاج پر مبنی ہے۔ خرابی کے ماڈل میں AFError شامل ہے، جو تمام عام نیٹ ورک کی ناکامی کے منظرناموں کا احاطہ کرتا ہے: ٹائم آؤٹ، کنکشن کا نقصان، سرور کی خرابیاں اور ناکام سیریلائزیشن۔ ہر کیس کو الگ سے ہینڈل کیا جاتا ہے۔

خرابی کے بعد دوبارہ کوشش کے لیے، Alamofire RequestRetrier میکانزم فراہم کرتا ہے۔ یہ پروٹوکول دوبارہ کوشش کی پالیسی کی وضاحت کرتا ہے: کوششوں کی تعداد، ان کے درمیان تاخیر اور وہ شرط جس پر دوبارہ کوشش کی جاتی ہے۔ مثال کے طور پر، 503 سرور کی خرابی پر، درخواست کو 2 سیکنڈ کے بعد دوبارہ آزمایا جا سکتا ہے، جبکہ 401 کی خرابی پر، ایک نیا تصدیقی ٹوکن درخواست کیا جا سکتا ہے۔

شماریات کے ساتھ AFError کا طریقہ اس بات کی ضمانت دیتا ہے کہ ڈویلپر کسی بھی قسم کی خرابی سے محروم نہ ہو — کمپائلر ہینڈلنگ کی مکملیت کی جانچ کرتا ہے۔ یہ کوڈ کو خام URLSession میں NSError کے ذریعے خرابی کے انتظام کے مقابلے میں زیادہ قابل اعتماد اور پیش قیاسی بناتا ہے۔

دوبارہ کوشش کی پالیسیاں اور بار بار درخواستیں

RequestRetrier پروٹوکول ایک دوبارہ کوشش کا طریقہ متعین کرتا ہے جو درخواست، سیشن، خرابی اور مکمل ہونے کی بندش وصول کرتا ہے۔ اس طریقہ میں، ڈویلپر فیصلہ کرتا ہے کہ آیا درخواست کو دوبارہ آزمایا جائے اور کس تاخیر کے بعد۔ Alamofire عام منظرناموں کے لیے ایک بلٹ ان RetryPolicy نفاذ فراہم کرتا ہے، لیکن پروڈکشن کوڈ کے لیے کاروباری منطق کی بنیاد پر حسب ضرورت پالیسیاں بنانے کی سفارش کی جاتی ہے۔

AFError مختلف خرابی کے زمروں کے لیے نیسٹڈ کیسز کے ساتھ ایک شماریات ہے۔ ڈویلپر ہر قسم کو الگ سے ہینڈل کر سکتا ہے: ٹائم آؤٹ کے لیے — درخواست دوبارہ آزمائیں، سرور کی خرابیوں کے لیے — صارف کو قابل فہم پیغام دکھائیں۔ Alamofire RequestRetrier پروٹوکول کے ذریعے حسب ضرورت دوبارہ کوشش کی پالیسیوں کو سپورٹ کرتا ہے۔

بلٹ ان تصدیق 200–299 کی حد میں اسٹیٹس کوڈز اور جواب کے مواد کی قسم کو چیک کرتی ہے۔ توسیعی تصدیق کے لیے، validate بندش کے ذریعے حسب ضرورت شرائط شامل کی جا سکتی ہیں، جو UI پرت کو ڈیٹا منتقل کرنے سے پہلے کاروباری منطق کی تصدیق کی اجازت دیتی ہیں۔

اکثر پوچھے گئے سوالات

Alamofire URLSession سے کیسے مختلف ہے؟

Alamofire URLSession کے مقابلے میں ایک اعلیٰ سطحی API فراہم کرتا ہے۔ لائبریری پیرامیٹر انکوڈنگ، جواب کی تصدیق اور ڈیٹا سیریلائزیشن کو خودکار کرتی ہے، جبکہ URLSession کو نیٹ ورک کی درخواست کے ہر جزو کی دستی ترتیب کی ضرورت ہوتی ہے۔

کیا Alamofire کو SwiftUI کے ساتھ استعمال کیا جا سکتا ہے؟

ہاں، Alamofire SwiftUI کے ساتھ مکمل طور پر مطابقت رکھتا ہے۔ درخواستیں عام طور پر ObservableObject کے اندر یا Task کا استعمال کرتے ہوئے async/await کے ذریعے انجام دی جاتی ہیں۔ Alamofire UIKit پر منحصر نہیں ہے، لہذا یہ جدید SwiftUI ایپلیکیشنز میں بہترین کام کرتا ہے۔

Alamofire کے متبادل کیا ہیں؟

Alamofire کے اہم متبادل ہیں: بلٹ ان URLSession، Moya (API تجرید کے ساتھ Alamofire کے اوپر ایک پرت)، FreshOS کا Networking اور GraphQL سرورز کے ساتھ کام کرنے کے لیے Apollo GraphQL۔ انتخاب پروجیکٹ کے آرکیٹیکچر پر منحصر ہے۔

کیا Alamofire Combine اور async/await کو سپورٹ کرتا ہے؟

Alamofire کے پاس Publishers ایکسٹینشنز کے ذریعے Combine کے ساتھ بلٹ ان انضمام ہے اور async/await کے ذریعے Swift Concurrency کو سپورٹ کرتا ہے۔ یہ جدید غیر مطابقت پذیر پروسیسنگ کے کسی بھی طریقے کو منتخب کرنے کی اجازت دیتا ہے۔

Alamofire میں درخواست کا ٹائم آؤٹ کیسے سیٹ کریں؟

ٹائم آؤٹ سیشن کنفیگریشن کے ذریعے سیٹ کیا جاتا ہے۔ URLSessionConfiguration بناتے وقت timeoutIntervalForRequest اور timeoutIntervalForResource پراپرٹیز سیٹ کریں، پھر انہیں سیشن انیشیالائزر کو پاس کریں۔ ڈیفالٹ ویلیو 60 سیکنڈ ہے۔

خلاصہ

  • Alamofire — Swift میں iOS، macOS، tvOS اور watchOS کے لیے معیاری HTTP کلائنٹ
  • لائبریری خودکار پیرامیٹر انکوڈنگ کے ساتھ تمام HTTP طریقوں کے لیے ایک جامع API فراہم کرتی ہے
  • جواب کی تصدیق اور خرابی کا انتظام AFError اور Result اقسام کے ذریعے نافذ کیا گیا ہے
  • تنصیب SPM، CocoaPods یا Carthage کے ذریعے تمام Apple پلیٹ فارمز کی حمایت کے ساتھ
  • انضمام Codable، Combine اور Swift Concurrency کے ساتھ جدید غیر مطابقت پذیر ترقی کے لیے
  • کارکردگی URLSession پر مبنی ہلکی پھلکی سیشن آرکیٹیکچر کے ذریعے حاصل کی جاتی ہے
  • کمیونٹی GitHub پر 45,000 سے زیادہ ستاروں کے ساتھ اسے مقبول ترین Swift لائبریریوں میں سے ایک بناتی ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں