منصوبے کے بارے میں
Ky ایک چھوٹا اور خوبصورت JavaScript HTTP کلائنٹ ہے جو Fetch API پر بنایا گیا ہے۔ یہ جدید براؤزرز، Node.js، Bun اور Deno کو نشانہ بناتا ہے اور بغیر کسی انحصار کے ایک چھوٹے پیکیج کے طور پر پیش کیا جاتا ہے۔ اسے npm کے ذریعے (`npm install ky`) یا jsdelivr، unpkg اور esm.sh جیسے CDNs سے لوڈ کیا جا سکتا ہے؛ Deno میں اسے براہ راست URL سے درآمد کیا جا سکتا ہے۔
سادہ `fetch` کے مقابلے میں، Ky طریقہ شارٹ کٹس (`ky.get()`، `ky.post()`، `ky.put()`، `ky.patch()`، `ky.head()`، `ky.delete()`، `ky.query()`) کے ساتھ ایک آسان API پیش کرتا ہے، ری ڈائریکٹس کے بعد غیر 2xx اسٹیٹس کوڈز کو غلطیوں کے طور پر سمجھتا ہے، اور ایک Response لوٹاتا ہے جو آسان باڈی طریقوں (`.json()`، `.text()`، `.formData()`، `.arrayBuffer()`، `.blob()` اور `.bytes()` جہاں رن ٹائم سپورٹ کرتا ہے) کے ساتھ توسیع شدہ ہوتا ہے۔ ایک `json` آپشن پے لوڈز کو سٹرنگائفائی کرتا ہے اور Content-Type ہیڈر سیٹ کرتا ہے، جبکہ `searchParams` درخواست کے URL میں استفسار کے پیرامیٹرز کو ضم کرتا ہے۔
درخواستوں کو `baseUrl` یا `prefix` کے ساتھ رشتہ دار URLs کو حل کرنے کے لیے، فی کوشش `timeout` (ڈیفالٹ 10000 ms) کے علاوہ ایک اختیاری `totalTimeout` جو دوبارہ کوششوں سمیت پوری کارروائی کا احاطہ کرتا ہے، اور `maxResponseSize` ڈی کمپریسڈ رسپانس باڈی بائٹس کو محدود کرنے کے لیے ترتیب دیا جا سکتا ہے۔ خودکار دوبارہ کوششیں انتہائی ترتیب پذیر ہیں: دوبارہ کوشش کی حدیں، قابل اطلاق طریقے اور اسٹیٹس کوڈز، `backoffLimit` کے ساتھ ایکسپونینشل بیک آف، کسٹم `delay` فنکشنز، تھنڈرنگ ہرڈ اثرات کو روکنے کے لیے `jitter`، `Retry-After` اور ریٹ-لمٹ ٹائمنگ ہیڈرز کا احترام، `retryOnTimeout`، اور مکمل طور پر کسٹم دوبارہ کوشش کے فیصلوں کے لیے `shouldRetry` کال بیک۔
لائف سائیکل ہکس (`init`، `beforeRequest`، `beforeRetry`، `beforeError`، `afterResponse`) درخواست کے لائف سائیکل کے دوران آپشنز، درخواستوں اور رسپانسز میں ترمیم کرنے کی اجازت دیتے ہیں — مثال کے طور پر اجازت نامی ہیڈرز منسلک کرنا، URLs کو دوبارہ لکھنا، یا `beforeRequest` ہک سے Response واپس کر کے جوابات کی نقل کرنا۔ `ky.extend()` کسٹم ڈیفالٹس کے ساتھ انسٹینسز بناتا ہے، جو API مخصوص کلائنٹس بنانے کے لیے مفید ہے۔
TypeScript سپورٹ میں `.json()` پر جنرکس شامل ہیں (جو `any` کے بجائے `unknown` پر ڈیفالٹ ہوتا ہے)، اور رسپانس باڈیز کو Zod جیسے معیاری اسکیما کے مطابق توثیق کاروں کے ساتھ توثیق کیا جا سکتا ہے، جب توثیق ناکام ہوتی ہے تو `SchemaValidationError` پھینک کر۔ اپ لوڈ اور ڈاؤن لوڈ پیشرفت کی حمایت بھی سادہ fetch پر اس کے فوائد میں شامل ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.