Sobes.tech
Junior

Ką priima fetch metodas?

sobes.tech AI

Atsakymas iš AI

fetch metodas priima vieną būtiną argumentą — užklausos kelią (RequestInfo arba URL) — ir vieną pasirinktą argumentą — nustatymų objektą (RequestInit).

Būtinas argumentas (input):

  • Eilutė: išteklių URL.
  • Request objektas: Request klasės pavyzdys, kuris leidžia lankstesnį užklausos nustatymą (antraštės, metodas ir kt.).

Pasirinktas argumentas (init): Objektas su laukais, apibūdinančiais užklausos nustatymus. Kai kurie dažnai naudojami laukai:

  • method: HTTP metodas (GET, POST, PUT, DELETE, OPTIONS ir kt.).
  • headers: Užklausos antraštės. Gali būti rakto-vertės objektas arba Headers klasės pavyzdys.
  • body: Užklausos kūnas (skirtas metodams, išskyrus GET ar HEAD). Gali būti eilutė, ArrayBuffer, TypedArray, DataView, Blob, FormData, URLSearchParams arba ReadableStream.
  • mode: Užklausos režimas (cors, no-cors, same-origin, navigate).
  • credentials: Paskirties duomenų siuntimo nustatymai (omit, same-origin, include).
  • cache: Klaidų kaupimo nustatymai (default, no-store, reload, no-cache, force-cache, only-if-cached).
  • redirect: Kaip tvarkyti peradresavimus (follow, error, manual).
  • referrer: Reikšmė Referer antraštei.
  • referrerPolicy: Referer antraštės perdavimo politika.
  • integrity: Integrity antraštės reikšmė. Naudojama Subresource Integrity.
  • keepalive: Boolean reikšmė, nurodanti, ar užklausa turi likti aktyvi po puslapio užbaigimo (analitikai ar ataskaitoms siųsti).
  • signal: AbortSignal pavyzdys užklausos atšaukimui.
  • window: Window objektas, su kuriuo susijusi užklausa (numatyta, dabartinis langas).

Pavyzdys:

// GET užklausa
fetch('/api/users')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Klaida:', error));

// POST užklausa su kūnu ir antraštėmis
fetch('/api/products', {
  method: 'POST', // HTTP metodas
  headers: {
    'Content-Type': 'application/json', // Duomenų tipas
    'Authorization': 'Bearer your_token' // Pavyzdys autorizacijos antraštės
  },
  body: JSON.stringify({ name: 'Naujas produktas', price: 100 }) // Užklausos kūnas
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP klaida! statusas: ${response.status}`);
    }
    return response.json();
  })
  .then(data => console.log('Sėkmė:', data))
  .catch(error => console.error('Klaida:', error));