Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS об'єкт Fetch

Введення в об'єкт Fetch

Fetch є сучасним інтерфейсом для здійснення мережевих запитів у JavaScript. Це сучасна альтернатива XMLHttpRequest і є частиною Web API, що робить його доступним у більшості сучасних веб-браузерів.

Основна сила Fetch полягає в його використанні обіцянок (promises), що надає більше контролю та гнучкості над асинхронними операціями. Коли ви виконуєте мережевий запит за допомогою Fetch, він повертає обіцянку, яка може бути вирішена або відхилена залежно від результату запиту.

Приклад:

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Помилка:', error));

Тут ми робимо запит до вказаного URL. Метод fetch() повертає обіцянку, яка при успішному виконанні запиту переходить до наступного етапу (використовуючи метод then()). У нашому випадку, коли отримана відповідь від сервера, ми її перетворюємо в JSON-формат за допомогою методу response.json(). Після цього, далі ми обробляємо отримані дані. Якщо під час виконання запиту виникає помилка, вона буде виведена в консоль завдяки блоку catch.

Однією з великих переваг Fetch є його здатність легко обробляти різні формати відповіді, такі як JSON, текст або бінарні дані. Це робить Fetch ідеальним вибором для більшості мережевих операцій у сучасних веб-додатках.

Додатково, завдяки обіцянкам, ви можете легко комбінувати різні мережеві запити, використовуючи методи Promise.all() або Promise.race(), що дозволяє здійснювати паралельні запити або обирати запит, який завершиться першим відповідно.

Основні методи і властивості

Давайте розглянемо основні аспекти роботи з Fetch, його методи та властивості, а також як ефективно його використовувати.

Метод fetch()

Цей метод використовується для ініціації мережевого запиту. Він приймає один обов'язковий аргумент – URL ресурсу, до якого слід звертатися, а також може приймати необов'язковий аргумент у вигляді об'єкта параметрів.

Приклад:

fetch('https://api.example.com/data', {
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Помилка:', error));

У цьому прикладі ми виконуємо GET-запит до URL 'https://api.example.com/data' і вказуємо, що очікуємо отримати дані у форматі JSON. Коли відповідь отримана, ми перетворюємо її у JSON і виводимо дані у консоль.

Властивість response.headers

Після виконання запиту за допомогою fetch() ви можете отримати доступ до заголовків відповіді за допомогою властивості headers об'єкта відповіді.

Приклад:

fetch('https://api.example.com/data')
.then(response => {
    console.log(response.headers.get('Content-Type'));
    return response.json();
})
.then(data => console.log(data));

Тут ми запитуємо заголовок 'Content-Type' з відповіді. Це допомагає нам з'ясувати, у якому форматі ми отримали дані.

Метод response.json()

Якщо ви знаєте, що відповідь сервера містить JSON-дані, ви можете використовувати цей метод для перетворення відповіді у формат JSON.

Приклад:

fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data));

У цьому прикладі ми знову робимо запит до сервера і, отримавши відповідь, одразу перетворюємо її на JSON. Потім ми можемо легко працювати з отриманими даними.

Метод response.text()

Якщо ви хочете отримати відповідь у текстовому форматі (наприклад, HTML або простий текст), ви можете використовувати метод response.text().

Приклад:

fetch('https://api.example.com/page')
.then(response => response.text())
.then(content => console.log(content));

Тут ми робимо запит до ресурсу, який повертає HTML-сторінку. Після отримання відповіді ми перетворюємо її у текстовий формат і виводимо зміст сторінки у консоль.

Нотатка:

Дуже важливо завжди додавати блок catch після ваших запитів, щоб зловити та обробити будь-які можливі помилки.

Порада:

Хоча сервер може відповісти, це не завжди гарантує, що відповідь є коректною. Перевіряйте response.ok перед додатковою обробкою даних.

Приклад:

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Мережева проблема: ' + response.status);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Помилка:', error));

Тут ми робимо запит до сервера, але перед обробкою відповіді перевіряємо, чи був запит успішним. Якщо ні, генеруємо помилку.

Нотатка:

Використання Fetch - це сучасний і гнучкий спосіб здійснювати мережеві запити в JavaScript. З його допомогою ви можете легко отримувати, відправляти та обробляти дані, отримані від сервера.

Синтаксис

fetch(url, [options])
    .then(response => {
        // обробка відповіді
    })
    .catch(error => {
        // обробка помилки
    });

Переглядачі

Переглядач

42

39

10.1

29

14

Переглядач

42

42

39

10.3

Переглядач

18.0.0

1.0

Приклади


Крім стандартних GET-запитів, Fetch дозволяє здійснювати інші типи запитів, наприклад POST, PUT або DELETE, завдяки передачі додаткових опцій.

У цьому прикладі ми відправляємо дані на сервер методом POST. Додаткові опції в fetch дозволяють налаштувати заголовки та відправити тіло запиту у форматі JSON.

fetch('https://api.example.com/user', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Іван',
    age: 30
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Помилка:', error));

Коли користувач заповнює форму на сайті (наприклад, форму реєстрації або замовлення), ця інформація повинна бути відправлена на сервер для обробки. Fetch може допомогти відправити ці дані на сервер у вигляді POST-запиту.

let formData = new FormData(document.querySelector('form'));

fetch('https://api.example.com/register', {
  method: 'POST',
  body: formData
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Помилка при відправці форми:', error));

Іноді користувачам сайтів потрібно оновити свої персональні дані. Замість завантаження нової сторінки, ми можемо використовувати Fetch для відправки запиту PUT, щоб оновити існуючі дані користувача.

const userData = {
  name: "Іван",
  email: "[email protected]"
};

fetch('https://api.example.com/user/123', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(userData)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Помилка при оновленні даних користувача:', error));

В багатьох сучасних веб-застосунках потрібно отримувати дані в реальному часі з різних джерел. API (Application Programming Interface) дозволяє нам отримувати такі дані. Ми можемо використовувати Fetch для взаємодії з API і завантаження цих даних в наш застосунок.

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Помилка при завантаженні даних:', error));

Методи

Властивості