GET-запросы

Bliss.js предоставляет лаконичный и современный API для работы с HTTP-запросами. GET-запросы используются для получения данных с сервера без изменения состояния ресурса. В Bliss.js выполнение таких запросов интуитивно и позволяет легко интегрировать асинхронные операции в веб-приложения.

Создание простого GET-запроса

Базовый синтаксис GET-запроса в Bliss.js выглядит следующим образом:

bliss.get('/api/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Ошибка запроса:', error);
  });

Разбор ключевых моментов:

  • bliss.get(url) — метод для отправки GET-запроса на указанный URL.
  • response.json() — метод преобразует ответ сервера в объект JavaScript, если сервер возвращает JSON.
  • then() и catch() — стандартная обработка промисов для успешного ответа и ошибок.

Передача параметров через URL

GET-запросы позволяют передавать данные в строке запроса. Bliss.js предоставляет удобный способ автоматической сериализации параметров:

bliss.get('/api/users', { params: { page: 2, limit: 10 } })
  .then(response => response.json())
  .then(users => console.log(users));
  • Параметры автоматически кодируются в URL: /api/users?page=2&limit=10.
  • Это упрощает работу с пагинацией, фильтрацией и поиском.

Настройка заголовков

Иногда необходимо передать кастомные заголовки, например, токены авторизации или заголовки для кэширования. Bliss.js позволяет задавать их через объект headers:

bliss.get('/api/profile', {
  headers: {
    'Authorization': 'Bearer TOKEN',
    'Accept': 'application/json'
  }
})
.then(response => response.json())
.then(profile => console.log(profile));
  • Authorization используется для аутентификации.
  • Accept указывает предпочтительный формат ответа.

Обработка ошибок

Bliss.js автоматически выбрасывает ошибки при сетевых сбоях, но серверные ошибки (например, 404 или 500) нужно обрабатывать вручную:

bliss.get('/api/data')
  .then(response => {
    if (!response.ok) {
      throw new Error(`Ошибка сервера: ${response.status}`);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error(error));
  • response.ok — логическое значение, показывающее успешность HTTP-ответа.
  • Использование throw позволяет перейти в блок catch при любой проблеме.

Асинхронные функции и GET-запросы

Для удобства работы с асинхронным кодом Bliss.js полностью совместим с async/await:

async function fetchUsers() {
  try {
    const response = await bliss.get('/api/users');
    if (!response.ok) throw new Error(`Ошибка: ${response.status}`);
    const users = await response.json();
    console.log(users);
  } catch (error) {
    console.error('Ошибка запроса:', error);
  }
}

fetchUsers();
  • Использование async/await делает код более читаемым при цепочках промисов.
  • Ошибки обрабатываются через try/catch, что улучшает отладку.

Параметры таймаута и кэширования

Bliss.js позволяет задавать таймаут запроса и стратегию кэширования для GET-запросов:

bliss.get('/api/data', {
  timeout: 5000,  // миллисекунды
  cache: 'no-cache'
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
  • timeout прерывает запрос, если сервер не отвечает заданное время.
  • cache управляет кэшированием: 'no-cache', 'reload', 'force-cache'.

Параллельные GET-запросы

Bliss.js позволяет выполнять несколько GET-запросов параллельно с использованием Promise.all:

Promise.all([
  bliss.get('/api/users').then(res => res.json()),
  bliss.get('/api/posts').then(res => res.json())
])
.then(([users, posts]) => {
  console.log('Пользователи:', users);
  console.log('Посты:', posts);
});
  • Это ускоряет загрузку данных, если их можно получать одновременно.
  • Результаты возвращаются в том же порядке, в котором были указаны запросы.

Интеграция с формами и фильтрами

GET-запросы часто используются для получения данных по пользовательским фильтрам. Bliss.js позволяет динамически формировать параметры:

const filters = {
  category: 'books',
  sort: 'price',
  order: 'asc'
};

bliss.get('/api/items', { params: filters })
  .then(response => response.json())
  .then(items => console.log(items));
  • Объект filters автоматически преобразуется в строку запроса: /api/items?category=books&sort=price&order=asc.
  • Это упрощает реализацию интерактивных таблиц, каталогов и поисковых интерфейсов.

Отладка GET-запросов

Для эффективной отладки Bliss.js поддерживает вывод информации о запросах:

bliss.get('/api/data', { debug: true })
  .then(response => response.json())
  .then(data => console.log(data));
  • Флаг debug выводит URL, заголовки и параметры запроса в консоль.
  • Помогает быстро обнаруживать ошибки в строке запроса или формате заголовков.

GET-запросы в Bliss.js сочетают простоту и гибкость: они поддерживают передачу параметров, настройку заголовков, обработку ошибок, таймауты и кэширование. Использование промисов и async/await обеспечивает удобное управление асинхронным потоком данных, делая библиотеку мощным инструментом для работы с API в современных веб-приложениях.