Метод $.fetch() является высокоуровневым инструментом
для выполнения HTTP-запросов в браузере с использованием синтаксиса,
упрощающего работу с промисами и обработку данных. Bliss.js
предоставляет обёртку над стандартным fetch API, добавляя
удобные цепочки вызовов, автоматическую обработку JSON и текстовых
ответов, а также встроенную поддержку ошибок.
$.fetch(url, options)
.then(response => { /* обработка ответа */ })
.catch(error => { /* обработка ошибок */ });
Параметры метода:
url — строка с адресом запроса.
options — объект настроек запроса, аналогичный
параметру init стандартного fetch. Может
содержать:
method — HTTP-метод (GET,
POST, PUT, DELETE и т. д.).headers — объект заголовков запроса.body — тело запроса для методов POST и
PUT.credentials — политика отправки cookies
("same-origin", "include").Метод возвращает Promise, который разрешается объектом ответа, дополнительно расширенным методами для удобной работы с данными.
Объект ответа, возвращаемый $.fetch(), имеет следующие
методы:
res.text() — возвращает тело ответа как строку.res.json() — парсит JSON и возвращает объект
JavaScript.res.blob() — возвращает бинарные данные.res.ok — логическое значение, отражающее успешность
запроса (код ответа 200–299).Пример использования:
$.fetch('/api/users')
.then(res => {
if (!res.ok) throw new Error(`Ошибка запроса: ${res.status}`);
return res.json();
})
.then(data => console.log(data))
.catch(err => console.error(err));
Bliss.js позволяет сразу работать с JSON-ответами без необходимости
явного вызова res.json() через цепочку then.
Для этого достаточно указать опцию json: true:
$.fetch('/api/data', { json: true })
.then(data => console.log(data))
.catch(err => console.error(err));
В этом случае метод автоматически проверяет заголовки ответа и преобразует данные в объект JavaScript, упрощая работу с API.
Метод $.fetch() поддерживает отправку данных в формате
JSON или URL-encoded. Пример POST-запроса с JSON:
$.fetch('/api/save', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Alice', age: 25 })
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Для отправки формы в формате
application/x-www-form-urlencoded:
$.fetch('/api/form', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({ name: 'Alice', age: 25 })
});
Bliss.js позволяет легко устанавливать и изменять заголовки запроса
через объект headers в опциях:
$.fetch('/api/resource', {
headers: {
'Authorization': 'Bearer token123',
'Accept': 'application/json'
}
});
Заголовки могут быть динамически сгенерированы:
const token = 'token123';
$.fetch('/api/secure', { headers: { 'Authorization': `Bearer ${token}` } });
Метод $.fetch() автоматически выбрасывает исключение
только при сетевых ошибках. Ошибки HTTP (например, 404 или 500) требуют
проверки свойства res.ok:
$.fetch('/api/items')
.then(res => {
if (!res.ok) throw new Error(`Статус ошибки: ${res.status}`);
return res.json();
})
.then(data => console.log(data))
.catch(err => console.error('Ошибка запроса:', err.message));
Для упрощения обработки Bliss.js позволяет использовать
вспомогательную цепочку catch сразу после
then, сохраняя контекст запроса.
Метод полностью совместим с async/await, что делает код
более читаемым:
async function getUsers() {
try {
const res = await $.fetch('/api/users', { json: true });
console.log(res);
} catch (err) {
console.error(err);
}
}
getUsers();
Bliss.js позволяет задавать глобальные настройки для всех вызовов
$.fetch(), например, базовый URL или общие заголовки:
$.fetch.defaults.baseURL = 'https://api.example.com';
$.fetch.defaults.headers = { 'Authorization': 'Bearer token123' };
$.fetch('/profile', { json: true }).then(console.log);
Эта возможность упрощает интеграцию с API и избавляет от необходимости повторно указывать одинаковые опции для каждого запроса.
Метод $.fetch() хорошо сочетается с другими функциями
библиотеки, например, с $.ready() для выполнения запроса
после загрузки DOM:
$.ready(() => {
$.fetch('/api/posts', { json: true })
.then(posts => console.log(posts));
});
Также возможна цепочка с методами для манипуляции DOM после получения данных:
$.fetch('/api/messages', { json: true })
.then(messages => $.id('messages').html(messages.map(m => `<li>${m.text}</li>`).join('')));
Метод $.fetch() в Bliss.js объединяет гибкость
стандартного fetch и удобство высокоуровневой работы с
промисами и данными, облегчая взаимодействие с API, управление
заголовками и обработку ошибок без лишнего кода.