JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու, օգտատիրոջ տեղեկությունները բեռնելու, սերվերից վերջին թարմացումները ստանալու և այլնի համար: Եվ այդ ամենը առանց էջը վերաբեռնելու:
Fetch API-ն ապահովում է fetch() մեթոդը, որը սահմանված է պատուհանի օբյեկտի վրա, որն ապահովում է ռեսուրսները ասինխրոն ցանցով բեռնելու հեշտ, տրամաբանական եղանակ: Այն ապահովում է JavaScript ինտերֆեյս՝ HTTP խողովակաշարի մասերը մուտք գործելու և շահարկելու համար (հարցումներ և պատասխաններ):
Բերման հիմնական հարցումն իսկապես պարզ է կարգավորվում: Նայեք հետևյալ կոդը.
fetch(’http://example.com/task.json’)
.then(response => response.json())
.then(data => console.log(data))
fetch()
-ի ամենապարզ օգտագործումը վերցնում է մեկ փաստարկ՝ այն ռեսուրսի ուղին, որը ցանկանում եք վերցնել, և վերադարձնում է խոստում, որը լուծում է այդ հարցման պատասխանին (հաջող է, թե ոչ): Սա պարզապես HTTP պատասխան է, այլ ոչ թե իրական JSON: Եթե դուք օգտագործում եք fetch()
, JSON տվյալները փոխանցելիս կա երկքայլ գործընթաց: Առաջինը պետք է կատարվի իրական հարցումը, իսկ հետո երկրորդը պետք է զանգի json()
մեթոդը պատասխանի վրա: Դուք կարող եք կամայականորեն փոխանցել սկզբնական ընտրանքների օբյեկտը որպես երկրորդ փաստարկ (օգտագործվում է req վերնագրերը կազմաձևելու համար HTTP հարցումների այլ տեսակների համար, ինչպիսիք են PUT, POST, DELETE)
Տարբերությունը fetch()-ի և jQuery.ajax()-ի միջև
Fetch-ը նման է XMLHttpRequest
-ին, սակայն նոր API-ն ապահովում է ավելի հզոր և ճկուն գործառույթների հավաքածու: fetch
հատկանիշը jQuery.ajax()
-ից տարբերվում է հետևյալ կերպ.
fetch()
-ից վերադարձված խոստումը չի մերժի HTTP սխալի կարգավիճակը, նույնիսկ եթե պատասխանը լինի HTTP 404 կամ 500: Փոխարենը, այն կլուծվի սովորաբար (ok
կարգավիճակը նշանակված է false-ով), և այն միայն կմերժի: ցանցի խափանման դեպքում կամ եթե որևէ բան խանգարեց հարցումն ավարտին հասցնել:fetch
չի ուղարկի թխուկներ, քանի դեռ չեք սահմանել հավատարմագրերը սկզբնական տարբերակը:
Axios-ը Javascript գրադարան է, որն օգտագործվում է HTTP հարցումներ node.js-ից կամ XMLHttpRequests բրաուզերից կատարելու համար, և այն աջակցում է Promise API-ին, որը բնօրինակ է JS ES6-ի համար: Այն կարող է օգտագործվել HTTP հարցումներն ու պատասխանները ընդհատելու համար և հնարավորություն է տալիս հաճախորդի կողմից պաշտպանություն XSRF-ից: Այն ունի նաև հարցումները չեղարկելու հնարավորություն:
Տեղադրում
Դուք պետք է տեղադրեք axios՝ օգտագործելով.
$ npm install axios
Կամ բովանդակության առաքման ցանց
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
Axios հարցումը պարզ է կարգավորվում: Նայեք հետևյալ կոդը.
axios.get('https://api.tasks.com/v1/artists/0OdUWJ0sBjDrqHygGUX') .then(function(response) { console.log(response) }) .catch(function(error) { console.log(error) })
Այսպիսով, օգտագործելով axios, դուք կարող եք կտրել http հարցման արդյունքները .json() մեթոդին փոխանցելու միջին քայլը: Axios-ը պարզապես վերադարձնում է տվյալների օբյեկտը, որը դուք ակնկալում եք:
Տարբերությունը fetch()-ի և axios-ի միջև
- Fetch API-ն ներկառուցված է պատուհանի օբյեկտի մեջ և, հետևաբար, կարիք չունի տեղադրել որպես կախվածություն կամ ներմուծել հաճախորդի կողմի կոդը:
- Axios-ը պետք է տեղադրվի որպես կախվածություն: Այնուամենայնիվ, այն ավտոմատ կերպով փոխակերպում է JSON-ի տվյալները ձեզ համար՝ դրանով իսկ խուսափելով .fetch() հարցում կատարելու երկքայլ գործընթացից, այնուհետև պատասխանի վրա .json() մեթոդին երկրորդ զանգից:
- Axios-ի միջոցով http հարցումով ստացված ցանկացած սխալ կկարգավորվի, և .catch() բլոկը կկատարվի:
- Axios-ը թույլ է տալիս չեղարկել հարցումը և հարցումների ժամանակի վերջնաժամկետըիսկ բեռնումը` ոչ:
- Axios-ն ունի լայն բրաուզերի աջակցություն,որտեղ որպեսFetch-ն աջակցում է միայն Chrome 42+, Firefox 39+, Edge 14+ և Safari 10.1+ (սա հայտնի է որպես Հետադարձ Համատեղելիություն):
fetch()
մեթոդը ժամանակակից և բազմակողմանի է ES6-ում http հարցումները ստանալու համար, սակայն Axios-ի նման երրորդ կողմի գրադարանների օգտագործմամբ որոշ սցենարներ կարող են ավելի լավ կարգավորվել:
Հուսով եմ, որ դուք հիմա ավելի լավ պատկերացում ունեք fetch()-ի հիմնական օգտագործման մասին Vs axios Vs jQuery.ajax(-ի): Եթե դեռ որևէ շփոթություն ունեք, տեղեկացրեք ինձ մեկնաբանություններում: