JS Fetch API

Fetch API interfeysi veb-serverdan ma’lumotlarni yuklab olish (fetch) imkonini beradi.

await fetch() — HTTP serverdan ma’lumot olish uchun zamonaviy API.

XMLHttpRequest() HTTP serveridan ma’lumotlarni olish uchun eski eski API edi.

ULASHISH

Fetch API nima

JavaScript Fetch API - bu veb-serverlarga asinxron tarmoq so‘rovlarini yuborish uchun ishlatiladigan zamonaviy brauzer interfeysi.

Fetch eski XMLHttpRequest obyektini osonroq va kuchliroq almashtirishdir.

Fetch toza asinxron kod uchun standart JavaScript Promise’laridan foydalanadi.


Matn faylini olish

fetch()’ni namoyish qilishning eng oddiy usuli — matn faylini yuklab olish.

Misollar

// Fetch a file
fetch(file)
  .then(function(response) {
     return response.text();
  })
  .then(function(data) {
    myDisplayer(data);
  });
O‘zingiz sinab ko‘ring »

Yoki (strelkali funksiyalar yordamida)

// Fetch a file
fetch(file)
  .then(response => response.text())
  .then(data => myDisplayer(data));
O‘zingiz sinab ko‘ring »
E’tibor bering: .then() argument sifatida funksiya kutadi, shuning uchun .then {...} emas, .then(...) deb yozishingiz kerak.

Asinxron funksiyadan foydalanish

// Async function to fetch a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(await response.text());
}
O‘zingiz sinab ko‘ring »

Batafsil...

fetch() va asinxron dasturlash haqida ko‘proq bilib oling:

Asynchronous Fetch.


Response obyekti

fetch() usuli Response obyektiga hal qiluvchi Promise qaytaradi.

Response obyekti server javobi haqidagi ma’lumotlarni (xususiyatlarni) o‘z ichiga oladi.

Xususiyat Tavsif
ok So‘rov muvaffaqiyatli bo‘lsa, true
status HTTP holat kodi
statusText HTTP holat xabari
url HTTP url manzili

Misol

Natija — Response obyekti [object Response].

// Async function to download a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(response);
}
O‘zingiz sinab ko‘ring »

ok xususiyati

Misol

response.ok qiymati true bo‘lishi kerak.

// Async function to download a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(response.ok);
}
O‘zingiz sinab ko‘ring »


status xususiyati

Misol

response.status qiymati 200 bo‘lishi kerak.

// Async function to download a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(response.status);
}
O‘zingiz sinab ko‘ring »

url xususiyati

Misol

// Async function to download a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(response.url);
}
O‘zingiz sinab ko‘ring »

Asinxron natija

JavaScript server javobini kutayotganda ishlashni davom ettirishi mumkin.

Misol

// Async function to download a file
async function loadText(file) {
  const response = await fetch(file);
  myDisplayer(response.url);
}

loadText("fetch.txt");
myDisplayer("JavaScript continues.");
O‘zingiz sinab ko‘ring »

Eslatma

Avval "JavaScript continues." ko‘rsatiladi.

U loadText() fetch() bajarilishini kutayotgan paytda ko‘rsatiladi.


Response obyekti metodlari

Response obyektida server javobini o‘qish usullari mavjud.

Metod Tavsif
text() Javobni matn sifatida o‘qiydi
json() Javobni JSON sifatida o‘qiydi
blob() Javobni ikkilik ma’lumot sifatida o‘qiydi
bytes() Javobni baytlar sifatida o‘qiydi
arrayBuffer() Javobni ArrayBuffer sifatida o‘qiydi

Batafsil...

JSON fayllarini so‘rash uchun fetch() dan qanday foydalanishni bilib oling:

JSON Fetch Tutorial.


HTTP xatolarini tekshirish

fetch() server javob berganda bajariladi (resolve).

Keng tarqalgan yangi boshlovchilar xatosi — fetch() HTTP xatolarida muvaffaqiyatsiz tugashini kutish.

404 topilmadi kabi HTTP xatosi Promise-ni rad etmaydi.

Fetch faqat tarmoq xatolarida rad etiladi (reject).

404 javobi rad etilgan promise emas.

Siz har doim ok xususiyatini tekshirishingiz kerak.

Misol

async function loadText(file) {
  const response = await fetch(file);
  if (!response.ok) {
    myDisplayer(response.status + " " + response.statusText);
    return;
  }
  myDisplayer(await response.text());
}
O‘zingiz sinab ko‘ring »

Eslatma

Ko‘p yuklash xatolar JavaScript xatosi emas.

Ular ko‘pincha yo‘l va javob muammolari.

Fetch ishlamasa, konsolni tekshiring.

So‘ng Network yorlig‘ini tekshiring.

  • Fayl nomi to‘g‘rimi?
  • Fayl yo‘li to‘g‘rimi?
  • Holat kodi 200 mi?


Fetch API va XMLHttpRequest (XHR)

XususiyatFetchXHR
SintaksisPromise-basedCallback-based
Error HandlingTarmoq nosozligida rad etiladiNeeds manual checking
StreamsSupports streamsOqimlarni qo‘llab-quvvatlamaydi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!