Это отличная новость для разработчиков 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 здесь.
Счастливого кодинга!