Sobes.tech
Junior

Какво приема методът fetch?

sobes.tech AI

Отговор от AI

Методът fetch приема един задължителен аргумент — пътя към заявката (RequestInfo или URL) — и един опционален аргумент — обект с настройки (RequestInit).

Задължителен аргумент (input):

  • Стринг: URL на ресурса.
  • Обект Request: Екземпляр на класа Request, който предоставя по-гъвкава настройка на заявката (заглавки, метод и т.н.).

Опционален аргумент (init): Обект с полета, описващи настройките на заявката. Някои често използвани полета:

  • method: HTTP метод на заявката (GET, POST, PUT, DELETE, OPTIONS и др.).
  • headers: Заглавки на заявката. Може да бъде обект с ключ-стойност или екземпляр на класа Headers.
  • body: Тяло на заявката (за методи, различни от GET или HEAD). Може да бъде стринг, ArrayBuffer, TypedArray, DataView, Blob, FormData, URLSearchParams или ReadableStream.
  • mode: Режим на заявката (cors, no-cors, same-origin, navigate).
  • credentials: Настройка за изпращане на идентификационни данни (omit, same-origin, include).
  • cache: Настройка за кеширане (default, no-store, reload, no-cache, force-cache, only-if-cached).
  • redirect: Как да се обработват пренасочвания (follow, error, manual).
  • referrer: Стойност за заглавката Referer.
  • referrerPolicy: Политика за предаване на заглавката Referer.
  • integrity: Стойност за заглавката Integrity. Използва се за Subresource Integrity.
  • keepalive: Булева стойност, указваща дали заявката трябва да остане активна след приключване на страницата (за изпращане на аналитика или отчети).
  • signal: Екземпляр на AbortSignal за отменяне на заявката.
  • window: Обект Window, с който е асоциирана заявката (по подразбиране текущият прозорец).

Пример за използване:

// GET заявка
fetch('/api/users')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Грешка:', error));

// POST заявка с тяло и заглавки
fetch('/api/products', {
  method: 'POST', // HTTP метод
  headers: {
    'Content-Type': 'application/json', // Тип на изпращаните данни
    'Authorization': 'Bearer your_token' // Пример за авторизационен заглавка
  },
  body: JSON.stringify({ name: 'Нов продукт', price: 100 }) // Тяло на заявката
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP грешка! статус: ${response.status}`);
    }
    return response.json();
  })
  .then(data => console.log('Успех:', data))
  .catch(error => console.error('Грешка:', error));