المعروف آگ سے آغاز

امالو فائر شروع کرنے کے لیے آپ اپنے آئیو ایس کے پروجیکٹ میں شامل کر سکتے ہیں، آپ کوکوا پا بہ رو یا کارتھیج کے استعمال سے لائبریری کا اضافہ کر سکتے ہیں. پیکج مینیجر کو اس کی سفارش کا مقصد ہے [FLT1] [1] [fL:T] تک رسائی حاصل کرنا [FT] [Mobile]] [f:T.]]]]]] [[، تمہاری طرف سے حاصل کردہ ایل ایل ایل ایل ایل ایل (انگریزی:T3]] اور اس کے بعد آپ کے آئیووا ورژن میں شامل کر نے کے لئے استعمال کیا: [1]

import Alamofire

الاموتھی کی ایل ٹی وی کے تمام عام استعمالات کے لیے آسان داخلی نقطہ فراہم کرتا ہے. [FLTT:5] کے تحت یہ ایپل کے زیر استعمال کے پلیٹ فارم کو استعمال کرتا ہے، مگر اس کے ذریعے آپ کو ویب سائٹس کی بجائے کمپیوٹر پر توجہ مرکوز کرنے کی اجازت دیتا ہے.

درخواستوں کو پورا کرنا

Freting data from a Restful on point is a struction a commonly action. Alamows settlection and not stable. درج ذیل مثال ایک commonthetical CPI سے صارفین کی فہرست تیار کرتی ہے:

AF.request("https://api.example.com/users")
 .validate()
 .responseDecodable(of: [User].self) { response in
 switch response.result {
 case .success(let users):
 print("Fetched \(users.count) users")
 case .failure(let error):
 print("Request failed with error: \(error)")
 }
 }

[ فٹ‌نوٹ : ۷ ] غور کریں کہ [ فٹ‌نوٹ : ۷ ] جس میں فوری طور پر تیز رفتار [ [ فٹ‌نوٹ : ۸ ] ] [ خودبخود ] ایسے آلات کو ماڈل میں شامل کرنے کے لئے پروٹوکول ۔

کوٹری پیرامیٹر اور آرکائیو کا اضافہ

بہت سے RUF ExIs کو پیرامیٹر یا رسمی ایچ ٹی پی کے سربراہ کی ضرورت ہوتی ہے. الامو فائر پیرامیٹر کو بطور لیکچر وصول کرتا ہے اور حاصل شدہ درخواستوں کے لیے خودکار طور پر کنٹرولس (parameters to the command). someters کو پیرامیٹر کے ذریعے شامل کیا جاتا ہے:

let parameters: Parameters = ["page": 1, "limit": 20]
let headers: HTTPHeaders = [
 "Authorization": "Bearer YOUR_TOKEN",
 "Accept": "application/json"
]

AF.request("https://api.example.com/users",
 parameters: parameters,
 headers: headers)
 .validate()
 .responseDecodable(of: [User].self) { response in
 // handle response
 }

الامو فائر خود کار طور پر پیرامیٹرز کے کوڈ اور ان کو درخواستی حساب سے ملانے کے لئے.

دوبارہ ملاپ

طریقہ کار 200–299 کی فضاء میں ایچ ٹی پی کی حیثیت کے کوڈ کے لیے خود کار چیک کریں اور جوابات کو غیر مجاز مواد ٹائپ کے ساتھ مسترد کریں. آپ دستوری معیارات کو بھی شامل کرسکتے ہیں۔ مثال کے طور پر صرف 200 اور 201 تک کے لیے تسلیم کرنے کے لیے:

.validate(statusCode: [200, 201])

اگر آپ کو کوئی غلط کام کرنا پڑے تو آپ کو اِس سے نپٹنے کی ضرورت ہے ۔

Prook Data بھیجنے کے لیے

تخلیق یا سرمایہ کاری کے وسائل کے لیے درخواست طلبی جسم کے ساتھ ایک پی ایس ایل کی درخواست درکار ہوتی ہے۔ای نام فائر کئی انفنٹری کی حمایت کرتا ہے کے ساتھ ربط اے آر ٹی اے پی آئی ایس کے لیے سب سے زیادہ عام ہونے والا آلہ ہے. ذیل مثال سرور کو نئے صارف کو بھیجتا ہے:

let newUser: [String: Any] = [
 "name": "Jane Doe",
 "email": "[email protected]"
]

AF.request("https://api.example.com/users",
 method: .post,
 parameters: newUser,
 encoding: JSONEncoding.default)
 .validate()
 .responseDecodable(of: User.self) { response in
 switch response.result {
 case .success(let createdUser):
 print("User created: \(createdUser)")
 case .failure(let error):
 print("Error creating user: \(error)")
 }
 }

اگر ایپ آئی اے پی آئی ایس ایس ایس کوڈ کوڈ کوڈ کوڈ (مثلاً Outh sign Exchange) کے لیے کا استعمال کریں بجائے فائل اپ لوڈ یا مخلوط ڈیٹا، ایل ایل ٹی فائر [FLT:AMT] فراہم کرتا ہے جو کثیر القومی درخواست کو بناتا ہے-

AF.upload(multipartFormData: { multipartFormData in
 multipartFormData.append(Data("Jane Doe".utf8), withName: "name")
 multipartFormData.append(imageData, withName: "avatar", fileName: "avatar.jpg", mimeType: "image/jpeg")
}, to: "https://api.example.com/users")
 .validate()
 .responseDecodable(of: User.self) { response in
 // handle response
 }

دیگر ٹی‌ٹی‌پی‌پی‌پی کے ساتھ کام کرتے ہیں

ممتاز ایپیس اکثر PUT (مکمل تجدید)، PATCH (partial development) اور DELETE (removal) آپریشن۔ الأعلامہ اِن کو اسی طریقہ کار سے چلاتا ہے؛ صرف پیرامیٹر تبدیل کرتا ہے۔

پُرُوٹ اور پُرٹیک

موجودہ وسائل کو اپ ڈیٹ کرنے کے لیے، استعمال یا . درخواستی جسم میں تجدیدی میدان موجود ہیں:

let updatedFields: [String: Any] = ["name": "Jane Smith"]
AF.request("https://api.example.com/users/123",
 method: .patch,
 parameters: updatedFields,
 encoding: JSONEncoding.default)
 .validate()
 .responseDecodable(of: User.self) { response in
 // handle updated user
 }

آسٹریلیا

کسی وسائل کے حصول کے لیے درخواست کا کوئی جسم درکار نہیں ہے جواب خالی ہو سکتا ہے یا واپس واپس بھیج سکتا ہے:

AF.request("https://api.example.com/users/123",
 method: .delete)
 .validate()
 .response { response in
 if let error = response.error {
 print("Delete failed: \(error)")
 } else {
 print("User deleted successfully")
 }
 }

متوقع حیثیت کوڈ کے لیے ہمیشہ اے پی آئی کی دستاویزات چیک کریں (مثلا 204 نمبر پر مواد)۔

فاضل غلطی ہینڈنگ اور نیٹ ورک منیجر

Robust غلطی handling Exect Exect صارف تجربہ کار کے لیے تنقیدی ہے. الامو فائر رپورٹ غلطیوں کے ذریعے، جو نیٹ ورک غلطیوں (وقتًاً)، سرور غلطیوں (یعنی حالتِ حیثیت)، اور سری اِن خامیوں (ان میں جی ڈی این) کے درمیان فرق کر کے غلطی کر سکتے ہیں۔آپ مخصوص ردِعملات کو جاننے کے لیے غلطی کا پتہ لگا سکتے ہیں:

switch response.result {
case .success(let value):
 // handle success
case .failure(let error):
 if let afError = error.asAFError {
 switch afError {
 case .sessionTaskFailed(let sessionError):
 print("Network issue: \(sessionError.localizedDescription)")
 case .responseValidationFailed(let reason):
 print("Validation failed: \(reason)")
 default:
 print("Other Alamofire error: \(afError.localizedDescription)")
 }
 }
}

نیٹ ورک دستیاب ہیں

درخواست کرنے سے پہلے آپ نیٹ ورک کی دستیابی کا جائزہ لینا چاہتے ہیں. کے میناروں پر مینار تبدیل ہونے والی تبدیلیاں. اپنی ایپ لائفکل میں شروع کریں:

let reachabilityManager = NetworkReachabilityManager()
reachabilityManager?.startListening { status in
 switch status {
 case .notReachable:
 print("Network is not reachable")
 case .reachable(.cellular):
 print("Connected via cellular")
 case .reachable(.ethernetOrWiFi):
 print("Connected via WiFi")
 case .unknown:
 print("Unknown status")
 }
}

یہ استعمال صارف یا تاخیر طلبات کو آگاہ کرنے کے لیے استعمال کریں۔ مزید ترقیاتی نمونوں کے لیے، ریریکل کی رسائی کو ایک ری ایکٹر کے ساتھ ملانے کے قابل ہونے پر، جیسے کہ دوبارہ ناکام درخواستوں کو بحال کرنے کے بعد

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

آپ کے ویب پیج پر کام کرنے سے آپ کو بہت فائدہ ہوگا ۔

۱ : قابلِ‌تعریف ماڈل

ہمیشہ تیز اقسام کا تعین کریں جو [ یا جواب دینے کے لیے . یہ دستی جے پی او کم کرنے کے لیے ختم ہوتا ہے. یا ذیلی سطح [FLT]. . [FTLT].] کیپل(FLTLCL) سے متعلقہ طور پر لی گئی کاپیوں پر مشتمل ہے۔

2۔ محفوظ توثیقی اور کیمیائی انتظام

کسی بھی مشکل کوڈ ایپی کلید یا اشارات کو نہیں محفوظ کریں اور ان سے کیچ میں حساس اقدار کو محفوظ کریں [OET:37] کے ذریعے درخواست گزار. Outh runs، ایک archive sing serenter. پروٹوکول آپ کو نئے نشانے حاصل کرنے کے بعد خودبخود دوبارہ درخواست کرنے کی اجازت دیتا ہے:

class AuthInterceptor: RequestInterceptor {
 func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result<URLRequest, Error>) -> Void) {
 var request = urlRequest
 request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
 completion(.success(request))
 }

 func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) {
 // Check if error is 401, refresh token, then retry
 completion(.retryWithDelay(1.0))
 }
}

3. کنورس ساتھ async/agenting

الامو فائر 5 مکمل طور پر تیز رفتار کے ماڈل کی حمایت کرتا ہے۔ طلبہ کے نسخے استعمال کریں تاکہ صفائی، لائن کوڈ لکھیں:

do {
 let users = try await AF.request("https://api.example.com/users")
 .serializingDecodable([User].self)
 .value
 print("Users: \(users)")
} catch {
 print("Error: \(error)")
}

اس کو کئی طلبہ منظم کرنے اور بیک بیک فائرنگ سے بچنے کے لیے انفنٹری (کم از کم گروپ، اداکار) کے ساتھ ملا کر اس بات کو یقینی بنائیں کہ وہ اس کا انتظام کریں گے۔

۴ : ۲۲

نیٹ ورک کیمرا کم کرنے اور اس میں بہتری لانے کے لیے، کوانکم کیچی پالیسیوں کو بہتر بنانے کے لیے. الاموتھی [مثلاً، . آپ ایک دستوری استعمال کر سکتے ہیں

let cache = URLCache(memoryCapacity: 10 * 1024 * 1024,
 diskCapacity: 50 * 1024 * 1024,
 diskPath: "networking_cache")
let session = Session(configuration: URLSessionConfiguration.default)
session.sessionConfiguration.urlCache = cache

5۔ اپنے حواس کا امتحان لیں

یا معماری کو استعمال کرتے ہوئے آپ کی غلطی کو یقینی بناتے ہوئے غلط معلومات کے بغیر درستی اور غلط منطقی حقیقت کو ثابت کرتے ہوئے

6۔ مرکزی طور پر موبائل فون مینیجر استعمال کریں۔

ایک اکائی کلاس بنائیں جو ایک کو بنیادوں پر، ہیڈ کوارٹروں، سیارچوں اور مشترکہ کیچ کے ساتھ منسلک کرتا ہے. یہ ڈرافٹ کو روک دیتا ہے اور پوری سطح پر پولیس یا مذاق اڑانے میں آسانی پیدا کرتا ہے:

class APIClient {
 static let shared = APIClient()
 private let session: Session

 private init() {
 let config = URLSessionConfiguration.default
 config.timeoutIntervalForRequest = 30
 config.urlCache = URLCache.shared
 session = Session(configuration: config, interceptor: AuthInterceptor())
 }

 func fetchUsers() async throws -> [User] {
 return try await session.request("\(baseURL)/users")
 .serializingDecodable([User].self)
 .value
 }
}

نیٹ ورکنگ کے نمونوں کی وسیع سمجھ کے لیے ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] میں قابل ذکر بصیرتیں (انسیس) کو ڈیزائن کرنے میں مدد فراہم کرتی ہیں۔

ان راہنماؤں اور اُن کے ذریعے آپ انٹرنیٹ پر ایک ایسی تہہ بنا سکتے ہیں جو آپ کو محفوظ رکھنے کیلئے بہت زیادہ طاقتور اور آسان ہے ۔