"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आधुनिक HTTP अनुरोधों के लिए Ky, Axios और Fetch का सर्वोत्तम विकल्प क्यों है?

आधुनिक HTTP अनुरोधों के लिए Ky, Axios और Fetch का सर्वोत्तम विकल्प क्यों है?

2024-11-04 को प्रकाशित
ब्राउज़ करें:109

Why Ky is the Best Alternative to Axios and Fetch for Modern HTTP Requests

जब जावास्क्रिप्ट में HTTP अनुरोधों को संभालने की बात आती है, तो Axios और Fetch लंबे समय से उपयोग किए जाने वाले उपकरण रहे हैं। हालाँकि, एक शक्तिशाली, आधुनिक विकल्प है जिस पर डेवलपर्स को विचार करना चाहिए —  Ky। हल्का और उन्नत सुविधाओं से भरपूर, Ky HTTP अनुरोधों को संभालना आसान और अधिक कुशल बनाता है। इस लेख में, हम बताएंगे कि Axios और Fetch API से सीधी तुलना के साथ, Ky क्यों सबसे अलग है।

1. Ky, Axios और Fetch API का अवलोकन

एक्सियोस

Axios जावास्क्रिप्ट के लिए एक लोकप्रिय, वादा-आधारित HTTP क्लाइंट है। यह स्वचालित JSON पार्सिंग, अनुरोध इंटरसेप्टर और कस्टम टाइमआउट जैसी सुविधाएं प्रदान करके HTTP अनुरोधों को सरल बनाता है। हालाँकि, इसका फ़ाइल आकार एक खामी बन सकता है, विशेष रूप से हल्के अनुप्रयोगों के लिए।

एपीआई लायें

Fetch HTTP अनुरोध करने के लिए एक अंतर्निहित ब्राउज़र एपीआई है। व्यापक रूप से उपयोग किए जाने पर, फ़ेच की कुछ सीमाएँ हैं: इसमें डिफ़ॉल्ट त्रुटि प्रबंधन या अंतर्निहित पुनर्प्रयास शामिल नहीं हैं, जिससे डेवलपर्स को बुनियादी कार्यक्षमता के लिए भी अतिरिक्त कोड लिखने की आवश्यकता होती है।

क्यू

Ky एक्सियोस और फ़ेच का एक हल्का (157~ केबी) विकल्प है, जो फ़ेच के शीर्ष पर बनाया गया है लेकिन अधिक सुविधा संपन्न एपीआई पेश करता है। अंतर्निहित पुनर्प्रयास, सरलीकृत त्रुटि प्रबंधन और अनुकूलन योग्य अनुरोध हुक के साथ, Ky सरलता और शक्ति के बीच संतुलन बनाता है।

क्यों चुनें?

  • हल्का वजन : केवल 157~ केबी आकार, प्रदर्शन-संवेदनशील अनुप्रयोगों के लिए आदर्श।
  • आधुनिक : फ़ेच एपीआई पर निर्मित लेकिन बेहतर डिफ़ॉल्ट के साथ।
  • पुनर्प्रयास समर्थन : विफल अनुरोधों पर स्वचालित पुनःप्रयास।
  • हुक : beforeRequest और AfterResponse हुक के साथ अनुरोधों और प्रतिक्रियाओं का आसान हेरफेर।

2. क्यू बेहतर क्यों है: मुख्य विशेषताएं और लाभ

हल्का और प्रदर्शन करने वाला

यह Ky को उन अनुप्रयोगों के लिए एक बढ़िया विकल्प बनाता है जहां प्रदर्शन और बंडल आकार महत्वपूर्ण हैं। हल्का होने के बावजूद, Ky पुनः प्रयास और त्रुटि प्रबंधन जैसी आवश्यक सुविधाओं का त्याग नहीं करता है।

सरल एपीआई, शक्तिशाली सुविधाएँ

Ky का सिंटैक्स Fetch जितना सीधा है, फिर भी यह अधिक अंतर्निहित शक्ति प्रदान करता है। उदाहरण के लिए, Ky के साथ GET अनुरोध करना इतना आसान है:

import ky from 'ky';
const data = await ky.get('https://api.example.com/data').json();

यह फ़ेच से बेहतर क्यों है?

  • स्वचालित JSON पार्सिंग : प्रतिक्रिया को मैन्युअल रूप से पार्स करने की कोई आवश्यकता नहीं है।
  • त्रुटि प्रबंधन: Ky 404 या 500 जैसे HTTP कोड के लिए सार्थक त्रुटियां देता है।
  • पुनर्प्रयास : फ़ेच के विपरीत, Ky स्वचालित रूप से विफल अनुरोधों का पुन:प्रयास करता है, जो चुपचाप विफल हो जाता है।

अंतर्निहित पुनर्प्रयास

Ky बिल्ट-इन रिट्री सपोर्ट के साथ आता है, जो अविश्वसनीय नेटवर्क स्थितियों से निपटने के लिए एक महत्वपूर्ण सुविधा है। एक्सियोस पुनः प्रयास कार्यक्षमता भी प्रदान करता है, लेकिन आपको एक अतिरिक्त प्लगइन का उपयोग करना होगा या इसे स्वयं कॉन्फ़िगर करना होगा। इसके विपरीत, Ky शून्य कॉन्फ़िगरेशन के साथ डिफ़ॉल्ट रूप से यह सुविधा प्रदान करता है।

await ky.get('https://api.example.com/data', { retry: 2 });

इस उदाहरण में, Ky किसी भी अतिरिक्त सेटअप के बिना, विफलता के मामले में 2 बार तक अनुरोध का पुनः प्रयास करेगा।

3. अनुरोध से पहले और प्रतिक्रिया के बाद: क्यू में हुक की शक्ति

Ky की सबसे आकर्षक विशेषताओं में से एक इसकी hooks प्रणाली है, विशेष रूप से beforeRequest और AfterResponse। ये हुक आपको बाहरी मिडलवेयर की आवश्यकता के बिना आपके HTTP अनुरोधों और प्रतिक्रियाओं पर पूर्ण नियंत्रण प्रदान करते हैं, जिसकी एक्सियोस को अक्सर आवश्यकता होती है।

beforeRequest हुक: अनुरोधों को आसानी से बढ़ाएं

Ky के साथ, आप beforeRequest हुक का उपयोग करके आउटगोइंग अनुरोधों को आसानी से संशोधित कर सकते हैं। चाहे आपको प्रमाणीकरण टोकन जोड़ने या हेडर संशोधित करने की आवश्यकता हो, beforeRequest इसे आसान बनाता है।

उदाहरण : प्रत्येक अनुरोध के लिए एक प्राधिकरण टोकन जोड़ना।

ky.extend({
  hooks: {
    beforeRequest: [
      request => {
        const token = localStorage.getItem('authToken');
        request.headers.set('Authorization', `Bearer ${token}`);
      }
    ]
  }
});

यह दोहराए जाने वाले कोड को कम करता है, जिससे विश्व स्तर पर प्रमाणीकरण को संभालना आसान हो जाता है।

आफ्टररेस्पॉन्स हुक: रिस्पांस हैंडलिंग को सरल बनाएं

आफ्टररिस्पॉन्स हुक के साथ, आप अपने संपूर्ण एप्लिकेशन में प्रतिक्रियाओं में हेरफेर कर सकते हैं। यह हुक विशिष्ट स्थिति कोड पर पुनर्प्रयासों को संभालने के लिए विशेष रूप से उपयोगी है, जैसे समाप्त हो चुके टोकन को ताज़ा करना।

उदाहरण: 401 अनधिकृत प्रतिक्रिया पर समाप्त हो चुके टोकन को स्वचालित रूप से ताज़ा करना।

ky.extend({
  hooks: {
    afterResponse: [
      async (request, options, response) => {
        if (response.status === 401) {
          const newToken = await refreshAuthToken();
          request.headers.set('Authorization', `Bearer ${newToken}`);
          return ky(request);
        }
      }
    ]
  }
});

इस सेटअप के साथ, आप अपने एप्लिकेशन में तर्क की नकल किए बिना टोकन को सहजता से रीफ्रेश कर सकते हैं।

4. त्रुटि प्रबंधन: Ky बनाम Axios बनाम Fetch API

एक्सियोस

एक्सियोस इंटरसेप्टर के माध्यम से अच्छी त्रुटि प्रबंधन प्रदान करता है, लेकिन इसमें उस सरलता का अभाव है जो Ky बॉक्स से बाहर पेश करता है। Axios को अक्सर पुनः प्रयास और त्रुटि स्थिति कोड प्रबंधन के लिए कस्टम तर्क की आवश्यकता होती है।

एपीआई लायें

फ़ेच की त्रुटि प्रबंधन डिफ़ॉल्ट रूप से सीमित है। यह 404 या 500 जैसे HTTP स्थिति कोड के लिए त्रुटियां नहीं देता है, जिससे डेवलपर्स को प्रतिक्रिया स्थितियों को मैन्युअल रूप से जांचने के लिए मजबूर होना पड़ता है।

क्यू

Ky त्रुटि प्रबंधन में उत्कृष्ट है। यह स्वचालित रूप से गैर-2xx HTTP प्रतिक्रियाओं के लिए त्रुटियां उत्पन्न करता है और अतिरिक्त कोड की आवश्यकता के बिना विफल अनुरोधों के लिए पुनः प्रयास कार्यक्षमता प्रदान करता है। यह त्रुटियों को सुरुचिपूर्ण ढंग से संभालने के लिए Ky को एक मजबूत समाधान बनाता है।

try {
  const data = await ky.get('https://api.example.com/data').json();
} catch (error) {
  console.error('Request failed:', error);
}

Ky पूरे अनुरोध को एक वादे में लपेटता है, यदि प्रतिक्रिया स्थिति कोड विफलता को इंगित करता है तो स्वचालित रूप से एक त्रुटि फेंकता है, जो डिबगिंग को सरल बनाता है।

5. व्यावहारिक उदाहरण: क्यू इन एक्शन

आइए कुछ व्यावहारिक उदाहरणों के साथ Ky का परीक्षण करें जो इसकी सादगी और शक्ति को प्रदर्शित करते हैं।

उदाहरण 1: GET अनुरोध करना

const response = await ky.get('https://api.example.com/items').json();
console.log(response);

Ky स्वचालित रूप से JSON पार्सिंग को संभालता है और किसी भी गैर-2xx स्थिति कोड के लिए एक त्रुटि फेंकता है, जो Fetch नहीं करता है।

उदाहरण 2: पुनः प्रयास के साथ पोस्ट अनुरोध

const response = await ky.post('https://api.example.com/create', {
  json: { name: 'Ky' },
  retry: 3
}).json();
console.log(response);

Ky विफल होने पर POST अनुरोध को 3 बार पुनः प्रयास करता है, अतिरिक्त कॉन्फ़िगरेशन के बिना Fetch या Axios की तुलना में बेहतर विश्वसनीयता प्रदान करता है।

6. निष्कर्ष: क्या Ky स्विच के लायक है?

यदि आप जावास्क्रिप्ट में HTTP अनुरोध करने के लिए आधुनिक , हल्के , और फीचर-पैक्ड समाधान की तलाश में हैं, तो Ky एक उत्कृष्ट विकल्प है. जबकि Axios और Fetch अभी भी व्यापक रूप से उपयोग किए जाते हैं, Ky स्वचालित पुनर्प्रयास, अनुरोधों और प्रतिक्रियाओं को अनुकूलित करने के लिए हुक और बेहतर डिफ़ॉल्ट त्रुटि प्रबंधन जैसे प्रमुख लाभ प्रदान करता है।

उन डेवलपर्स के लिए जो HTTP अनुरोधों पर सादगी, प्रदर्शन, और नियंत्रण को प्राथमिकता देते हैं, Ky निश्चित रूप से आपके जावास्क्रिप्ट प्रोजेक्ट्स में एक प्राथमिक उपकरण के रूप में विचार करने लायक है।

अधिक उदाहरणों और विस्तृत एपीआई जानकारी के लिए, आप https://www.npmjs.com/package/ky पर जा सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/usluer/why-ky-is-the-best-alternative-to-axios-and-fetch-for-modern-http-requests-27c3?1यदि कोई है उल्लंघन, हटाने के लिए कृपया [email protected] से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3