March 21, 2023

Як зробити HTTP-запит в Javascript?

Щоб зробити HTTP-запит в JavaScript, можна скористатися вбудованим методом або об'єктом.fetch()XMLHttpRequest()
За допомогою методу fetch():
javascriptCopy codefetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));
Використання об'єкта XMLHttpRequest()
JavaScriptCopy codeconst request = new XMLHttpRequest();
request.open('GET', url, true);
request.onload = function() {
  if (this.status >= 200 && this.status < 400) {
    const data = JSON.parse(this.response);
    console.log(data);
  } else {
    console.error('Request failed with status code', this.status);
  }
};
request.onerror = function() {
  console.error('Request failed');
};
request.send();
В обох випадках замініть 'url-адресу з URL-адресою кінцевої точки API або ресурсу, до якого ви хочете отримати доступ. Програмаfetch() метод повертає обіцянку, яка переходить до об'єкта відповіді, з якого потім можна витягти дані. "XMLHttpRequestXMLHttpRequest() об'єкт надсилає HTTP-запит і обробляє відповідь, використовуючи його onload іonerror Методи.

Ajax

Ajax — це традиційний спосіб створення асинхронного запиту HTTP. Дані можна надсилати за допомогою методу HTTP POST і отримувати за допомогою методу HTTP GET. Давайте подивимось, як зробити запит GET. Я буду використовувати сайт JSONPlaceholder – безкоштовний онлайн API REST для розробників, який повертає випадкові дані у форматі JSON.

Щоб зробити виклик HTTP в Ajax, потрібно ініціалізувати новий метод XMLHttpRequest() та вказати кінцеву точку URL-адреси і метод HTTP (у цьому випадку GET). Далі ми використовуємо метод open() для зв’язування методу HTTP та кінцевої точки URL-адреси і викликаємо метод send() для ініціалізації запиту.

Ми реєструємо відповідь HTTP в консолі за допомогою властивості XMLHTTPRequest.onreadystatechange, яка містить обробник подій, що викликається, коли подія readystatechanged запускається.

const Http = new XMLHttpRequest();
const url='https://jsonplaceholder.typicode.com/posts';
Http.open("GET", url);
Http.send();

Http.onreadystatechange = (e) => {
  console.log(Http.responseText)
}

Якщо ви переглянете консоль браузера, то побачите, що вона поверне масив даних у форматі JSON. Але як ми можемо знати, чи запит виконано? Іншими словами, як ми можемо обробляти відповіді за допомогою Ajax?

Властивість onreadystatechange має два методи: readyState та status, які дозволяють перевірити стан нашого запиту.

Якщо readyState дорівнює 4, то це свідчить про те, що запит виконано. Властивість readyState має 5 відповідей. Дізнайтесь про них більше за цим посиланням.

Окрім прямого виклику Ajax за допомогою JavaScript існують й інші, більш потужні методи здійснення виклику HTTP (наприклад, $.Ajax, який є методом jQuery) і тому я зупинюсь на них більш детально.