जवाबों:
फ़ेच और एक्सिओस कार्यक्षमता में बहुत समान हैं, लेकिन अधिक पश्च संगतता के लिए एक्सिस बेहतर काम करता है (उदाहरण के लिए IE 11 में काम नहीं करता है, इस पोस्ट की जाँच करें )
इसके अलावा, यदि आप JSON अनुरोधों के साथ काम करते हैं, तो निम्नलिखित कुछ मतभेद हैं जिनके साथ मैं ठोकर खाई हूं।
JSON पोस्ट अनुरोध प्राप्त करें
let url = 'https://someurl.com';
let options = {
method: 'POST',
mode: 'cors',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
property_one: value_one,
property_two: value_two
})
};
let response = await fetch(url, options);
let responseOK = response && response.ok;
if (responseOK) {
let data = await response.json();
// do something with data
}
Axios JSON पोस्ट अनुरोध
let url = 'https://someurl.com';
let options = {
method: 'POST',
url: url,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
data: {
property_one: value_one,
property_two: value_two
}
};
let response = await axios(options);
let responseOK = response && response.status === 200 && response.statusText === 'OK';
if (responseOK) {
let data = await response.data;
// do something with data
}
इसलिए:
उम्मीद है की यह मदद करेगा।
Axios request is ok when status is 200 and statusText is 'OK'
201 या 204 जैसे 2xx रेंज में अन्य httpStatus के बारे में क्या?
वे HTTP अनुरोध पुस्तकालय हैं ...
मैं उसी संदेह के साथ समाप्त होता हूं, लेकिन इस पोस्ट में तालिका मेरे साथ जाती है isomorphic-fetch
। जो है, fetch
लेकिन NodeJS के साथ काम करता है।
http://andrewhfarmer.com/ajax-libraries/
उपरोक्त लिंक मृत है समान तालिका यहां है: https://www.javascriptstuff.com/ajax-lbooks/
fetch
के रूप में मूल निवासी ( मतलब आप इसे उपयोग कर सकते हैं - कोई ज़रूरत नहीं एक पुस्तकालय शामिल करने के लिए , उसके अनुसार तालिका स्रोत के लिए) है, जबकि वास्तव में fetch
है कुछ प्लेटफॉर्म में लागू नहीं किया जिसके लिए आप एक प्रदान करने की आवश्यकता (विशेष रूप से IE के सभी संस्करणों में), बाहरी पॉलीफ़िल वैसे भी।
timeout
(जो बहुत अजीब है) हमें इस बुनियादी कार्यक्षमता को लागू करने के लिए एक अलग मॉड्यूल का उपयोग करना होगा।
GitHub पर mzabriskie के अनुसार :
कुल मिलाकर वे बहुत समान हैं। अक्षतंतु के कुछ लाभ:
ट्रांसफ़ॉर्मर्स: अनुरोध किए जाने से पहले या प्रतिक्रिया प्राप्त होने के बाद डेटा पर ट्रांस्फ़ॉर्म करने की अनुमति दें
इंटरसेप्टर: आपको अनुरोध या प्रतिक्रिया को पूरी तरह से बदलने की अनुमति देता है (साथ ही हेडर)। यह भी, अनुरोध किए जाने से पहले या प्रोमिस सेटल होने से पहले async संचालन करें
अंतर्निहित XSRF सुरक्षा
कृपया ब्राउज़र समर्थन अक्ष की जाँच करें
मुझे लगता है कि आपको axios का उपयोग करना चाहिए।
भ्रूण एपीआई और अक्षीय एपीआई के बीच एक और बड़ा अंतर
Axios एक स्टैंड-अलोन 3rd पार्टी पैकेज है जिसे आसानी से NPM का उपयोग करके रिएक्ट प्रोजेक्ट में स्थापित किया जा सकता है।
आपके द्वारा उल्लिखित दूसरा विकल्प है, भ्रूण का कार्य। एक्सियोस के विपरीत, fetch()
अधिकांश आधुनिक ब्राउज़रों में बनाया गया है। लाने के साथ आपको थर्ड पार्टी पैकेज स्थापित करने की आवश्यकता नहीं है।
तो यह आप पर निर्भर करता है, आप के साथ जा सकते हैं fetch()
और संभावित रूप से गड़बड़ कर सकते हैं यदि आप नहीं जानते कि आप क्या कर रहे हैं या सिर्फ एक्सियो का उपयोग करें जो मेरी राय में अधिक सीधा है।
इसके अलावा ... मैं अपने परीक्षण में विभिन्न कामों के साथ खेल रहा था और उनके 4xx अनुरोधों के विभिन्न हैंडलिंग पर ध्यान दिया। इस मामले में मेरा परीक्षण 400 प्रतिक्रिया के साथ एक जोंस ऑब्जेक्ट देता है। इस प्रकार 3 लोकप्रिय कामों ने प्रतिक्रिया को संभाल लिया है:
// request-promise-native
const body = request({ url: url, json: true })
const res = await t.throws(body);
console.log(res.error)
// node-fetch
const body = await fetch(url)
console.log(await body.json())
// Axios
const body = axios.get(url)
const res = await t.throws(body);
console.log(res.response.data)
ब्याज की है request-promise-native
और axios
4xx प्रतिक्रिया पर फेंक node-fetch
नहीं है, जबकि है। इसके अलावा fetch
जौन पार्सिंग के लिए एक वादा का उपयोग करता है।
.throws
त्रुटियों को फेंकने की एक विधि होती है। इस मामले में मैं अल 3 लिबास से अस्वीकृति का परीक्षण कर रहा था और जो डेटा लौटा था उसमें अंतर देखा।
अक्षतंतु के लाभ: