इस प्रोजेक्ट के बारे में
Ky एक छोटा, सुंदर JavaScript HTTP क्लाइंट है जो Fetch API के ऊपर बनाया गया है। यह आधुनिक ब्राउज़र, Node.js, Bun और Deno को लक्षित करता है, और बिना किसी निर्भरता के एक छोटे पैकेज के रूप में आता है। इसे npm (`npm install ky`) के माध्यम से स्थापित किया जा सकता है या jsdelivr, unpkg और esm.sh जैसे CDN से लोड किया जा सकता है; Deno में इसे सीधे URL से आयात किया जा सकता है।
सादे `fetch` की तुलना में, Ky एक सरल API प्रदान करता है जिसमें विधि शॉर्टकट (`ky.get()`, `ky.post()`, `ky.put()`, `ky.patch()`, `ky.head()`, `ky.delete()`, `ky.query()`) शामिल हैं, यह रीडायरेक्ट के बाद गैर-2xx स्थिति कोड को त्रुटि मानता है, और एक Response लौटाता है जो सुविधाजनक बॉडी विधियों (`.json()`, `.text()`, `.formData()`, `.arrayBuffer()`, `.blob()`, और `.bytes()` जहाँ रनटाइम समर्थन करता है) के साथ विस्तारित होता है। एक `json` विकल्प पेलोड को स्ट्रिंग में बदलता है और Content-Type हेडर सेट करता है, जबकि `searchParams` क्वेरी पैरामीटर को अनुरोध URL में मर्ज करता है।
अनुरोधों को `baseUrl` या `prefix` के साथ कॉन्फ़िगर किया जा सकता है ताकि सापेक्ष URL हल हो सकें, प्रति-प्रयास `timeout` (डिफ़ॉल्ट 10000 ms) के साथ-साथ वैकल्पिक `totalTimeout` जो रिट्री सहित पूरे ऑपरेशन को कवर करता है, और `maxResponseSize` डीकंप्रेस्ड प्रतिक्रिया बॉडी बाइट्स को सीमित करने के लिए। स्वचालित रिट्री अत्यधिक कॉन्फ़िगर करने योग्य हैं: रिट्री सीमाएँ, लागू विधियाँ और स्थिति कोड, `backoffLimit` के साथ एक्सपोनेंशियल बैकऑफ़, कस्टम `delay` फ़ंक्शन, थंडरिंग-झुंड प्रभाव को रोकने के लिए `jitter`, `Retry-After` और रेट-लिमिट टाइमिंग हेडर का सम्मान, `retryOnTimeout`, और पूरी तरह से कस्टम रिट्री निर्णयों के लिए एक `shouldRetry` कॉलबैक।
लाइफसाइकिल हुक (`init`, `beforeRequest`, `beforeRetry`, `beforeError`, `afterResponse`) अनुरोध लाइफसाइकिल के दौरान विकल्पों, अनुरोधों और प्रतिक्रियाओं को संशोधित करने की अनुमति देते हैं — उदाहरण के लिए प्रमाणीकरण हेडर जोड़ना, URL फिर से लिखना, या `beforeRequest` हुक से Response लौटाकर प्रतिक्रियाओं का मॉक करना। `ky.extend()` कस्टम डिफ़ॉल्ट के साथ इंस्टेंस बनाता है, जो API-विशिष्ट क्लाइंट बनाने के लिए उपयोगी है।
TypeScript समर्थन में `.json()` पर जेनेरिक शामिल हैं (डिफ़ॉल्ट `any` के बजाय `unknown`), और प्रतिक्रिया निकायों को Zod जैसे Standard Schema-संगत वैधानिकों के साथ मान्य किया जा सकता है, जो विफलता पर `SchemaValidationError` फेंकता है। अपलोड और डाउनलोड प्रगति समर्थन भी सादे fetch पर इसके लाभों में सूचीबद्ध है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.