Fetch API наконец-то появился в Node v18.0

Это отличная новость для разработчиков Javascript, теперь мы можем использовать Fetch API в нашем приложении Node без необходимости использования каких-либо библиотек. Ранее нам нужно было добавлять дополнительные пакеты, такие как node-fetch или axios, но теперь они нам больше не нужны.

Что такое Fetch API?

Fetch API — это стандартный способ выполнения HTTP-запросов к веб-интерфейсу API. Он основан на обещаниях и поддерживает многие высокоуровневые функции HTTP, в то же время фокусируясь на наиболее распространенном сценарии: отправке простых HTTP-запросов.

Под капотом API он состоит из следующих элементов

точка входа fetch() для инициирования запросов

Headers Представляет заголовки ответа/запроса, позволяя вам запрашивать их и предпринимать различные действия в зависимости от результатов.

Запрос Представляет запрос ресурса.

Response Представляет ответ на запрос.

Fetch API обычно работает в браузерах, но теперь он работает и на серверах Node. Нам не понадобятся какие-либо зависимости, поскольку ядро Node.js теперь будет поддерживать API.

Когда Fetch API включен, становятся доступны следующие глобальные функции и классы: fetch(), Request, Response, Headers, FormData.

Реализация Fetch

Пожалуйста, убедитесь, что на вашей машине установлена версия node выше v18.0. Выполните команду node -v в консоли, чтобы узнать, какая версия у вас установлена. Если она меньше 18, то вам необходимо обновить ее, прежде чем вы сможете использовать эти новые возможности.

Мы будем реализовывать три основных запроса GET, POST, DELETE.

Запрос GET

const getMethod = async () => {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  if (res.ok) {
      const data = await res.json();
      console.log(data);
  }
};

getMethod();
Вход в полноэкранный режим Выйти из полноэкранного режима

POST запрос

  const postMethod = async () => {
    const data = {
      title: 'I love Node.js',
      body: 'Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.',
      userId: 1,
    };
    const res = await fetch("https://jsonplaceholder.typicode.com/posts", {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        mode: 'cors', // no-cors, *cors, same-origin
        cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
        credentials: 'same-origin', // include, *same-origin, omit
        headers: {
          'Content-type': 'application/json; charset=UTF-8',
            // 'Content-Type': 'application/x-www-form-urlencoded',
        },
        redirect: 'follow', // manual, *follow, error
        referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
        body: JSON.stringify(data) // body data type must match "Content-Type" header

    });
    await res.json();
};

postMethod();
Вход в полноэкранный режим Выйти из полноэкранного режима

Запрос DELETE

const deleteMethod = async () => {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts/1", {
      method: 'DELETE'
});
console.log(res);
};

deleteMethod();
Войти в полноэкранный режим Выход из полноэкранного режима

Заключение

Мы реализовали операцию fetch API с помощью Node без необходимости импорта библиотек. Следует отметить, что под капотом реализация fetch основана на другом HTTP-клиенте, undici, который на самом деле является HTTP-клиентом, написанным специально для Node.js. Это клиент только для HTTP 1.1.

Это небольшое усовершенствование фреймворка, но оно приносит много радости нам, разработчикам. Мы только что рассмотрели введение в Node.js 18 Fetch API. Вы можете углубиться в эту тему в официальной документации Node здесь.

Счастливого кодинга!

Оцените статью
Procodings.ru
Добавить комментарий