जब जावास्क्रिप्ट में HTTP अनुरोधों को संभालने की बात आती है, तो Axios और Fetch लंबे समय से उपयोग किए जाने वाले उपकरण रहे हैं। हालाँकि, एक शक्तिशाली, आधुनिक विकल्प है जिस पर डेवलपर्स को विचार करना चाहिए — Ky। हल्का और उन्नत सुविधाओं से भरपूर, Ky HTTP अनुरोधों को संभालना आसान और अधिक कुशल बनाता है। इस लेख में, हम बताएंगे कि Axios और Fetch API से सीधी तुलना के साथ, Ky क्यों सबसे अलग है।
Axios जावास्क्रिप्ट के लिए एक लोकप्रिय, वादा-आधारित HTTP क्लाइंट है। यह स्वचालित JSON पार्सिंग, अनुरोध इंटरसेप्टर और कस्टम टाइमआउट जैसी सुविधाएं प्रदान करके HTTP अनुरोधों को सरल बनाता है। हालाँकि, इसका फ़ाइल आकार एक खामी बन सकता है, विशेष रूप से हल्के अनुप्रयोगों के लिए।
Fetch HTTP अनुरोध करने के लिए एक अंतर्निहित ब्राउज़र एपीआई है। व्यापक रूप से उपयोग किए जाने पर, फ़ेच की कुछ सीमाएँ हैं: इसमें डिफ़ॉल्ट त्रुटि प्रबंधन या अंतर्निहित पुनर्प्रयास शामिल नहीं हैं, जिससे डेवलपर्स को बुनियादी कार्यक्षमता के लिए भी अतिरिक्त कोड लिखने की आवश्यकता होती है।
Ky एक्सियोस और फ़ेच का एक हल्का (157~ केबी) विकल्प है, जो फ़ेच के शीर्ष पर बनाया गया है लेकिन अधिक सुविधा संपन्न एपीआई पेश करता है। अंतर्निहित पुनर्प्रयास, सरलीकृत त्रुटि प्रबंधन और अनुकूलन योग्य अनुरोध हुक के साथ, Ky सरलता और शक्ति के बीच संतुलन बनाता है।
क्यों चुनें?
यह Ky को उन अनुप्रयोगों के लिए एक बढ़िया विकल्प बनाता है जहां प्रदर्शन और बंडल आकार महत्वपूर्ण हैं। हल्का होने के बावजूद, Ky पुनः प्रयास और त्रुटि प्रबंधन जैसी आवश्यक सुविधाओं का त्याग नहीं करता है।
Ky का सिंटैक्स Fetch जितना सीधा है, फिर भी यह अधिक अंतर्निहित शक्ति प्रदान करता है। उदाहरण के लिए, Ky के साथ GET अनुरोध करना इतना आसान है:
import ky from 'ky'; const data = await ky.get('https://api.example.com/data').json();
यह फ़ेच से बेहतर क्यों है?
Ky बिल्ट-इन रिट्री सपोर्ट के साथ आता है, जो अविश्वसनीय नेटवर्क स्थितियों से निपटने के लिए एक महत्वपूर्ण सुविधा है। एक्सियोस पुनः प्रयास कार्यक्षमता भी प्रदान करता है, लेकिन आपको एक अतिरिक्त प्लगइन का उपयोग करना होगा या इसे स्वयं कॉन्फ़िगर करना होगा। इसके विपरीत, Ky शून्य कॉन्फ़िगरेशन के साथ डिफ़ॉल्ट रूप से यह सुविधा प्रदान करता है।
await ky.get('https://api.example.com/data', { retry: 2 });
इस उदाहरण में, Ky किसी भी अतिरिक्त सेटअप के बिना, विफलता के मामले में 2 बार तक अनुरोध का पुनः प्रयास करेगा।
Ky की सबसे आकर्षक विशेषताओं में से एक इसकी hooks प्रणाली है, विशेष रूप से beforeRequest और AfterResponse। ये हुक आपको बाहरी मिडलवेयर की आवश्यकता के बिना आपके HTTP अनुरोधों और प्रतिक्रियाओं पर पूर्ण नियंत्रण प्रदान करते हैं, जिसकी एक्सियोस को अक्सर आवश्यकता होती है।
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); } } ] } });
इस सेटअप के साथ, आप अपने एप्लिकेशन में तर्क की नकल किए बिना टोकन को सहजता से रीफ्रेश कर सकते हैं।
एक्सियोस इंटरसेप्टर के माध्यम से अच्छी त्रुटि प्रबंधन प्रदान करता है, लेकिन इसमें उस सरलता का अभाव है जो 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 पूरे अनुरोध को एक वादे में लपेटता है, यदि प्रतिक्रिया स्थिति कोड विफलता को इंगित करता है तो स्वचालित रूप से एक त्रुटि फेंकता है, जो डिबगिंग को सरल बनाता है।
आइए कुछ व्यावहारिक उदाहरणों के साथ Ky का परीक्षण करें जो इसकी सादगी और शक्ति को प्रदर्शित करते हैं।
const response = await ky.get('https://api.example.com/items').json(); console.log(response);
Ky स्वचालित रूप से JSON पार्सिंग को संभालता है और किसी भी गैर-2xx स्थिति कोड के लिए एक त्रुटि फेंकता है, जो Fetch नहीं करता है।
const response = await ky.post('https://api.example.com/create', { json: { name: 'Ky' }, retry: 3 }).json(); console.log(response);
Ky विफल होने पर POST अनुरोध को 3 बार पुनः प्रयास करता है, अतिरिक्त कॉन्फ़िगरेशन के बिना Fetch या Axios की तुलना में बेहतर विश्वसनीयता प्रदान करता है।
यदि आप जावास्क्रिप्ट में HTTP अनुरोध करने के लिए आधुनिक , हल्के , और फीचर-पैक्ड समाधान की तलाश में हैं, तो Ky एक उत्कृष्ट विकल्प है. जबकि Axios और Fetch अभी भी व्यापक रूप से उपयोग किए जाते हैं, Ky स्वचालित पुनर्प्रयास, अनुरोधों और प्रतिक्रियाओं को अनुकूलित करने के लिए हुक और बेहतर डिफ़ॉल्ट त्रुटि प्रबंधन जैसे प्रमुख लाभ प्रदान करता है।
उन डेवलपर्स के लिए जो HTTP अनुरोधों पर सादगी, प्रदर्शन, और नियंत्रण को प्राथमिकता देते हैं, Ky निश्चित रूप से आपके जावास्क्रिप्ट प्रोजेक्ट्स में एक प्राथमिक उपकरण के रूप में विचार करने लायक है।
अधिक उदाहरणों और विस्तृत एपीआई जानकारी के लिए, आप https://www.npmjs.com/package/ky पर जा सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3