Repolode
L-Blondy

L-Blondy/up-fetch

Конструктор TypeScript-клиента для fetch с валидацией по схемам, типизированными ответами, повторами запросов, таймаутами и отслеживанием прогресса.

Звёзды
1,409
Форки
22
Открытые issues
2
Последний коммит
2 месяца назад

Что это?

upfetch — конструктор клиента для fetch, который оборачивает нативный API fetch. Вы создаёте экземпляр с параметрами по умолчанию, например baseUrl, headers, timeout и настройками повторов, а затем вызываете его как fetch. Параметры запросов и тела можно передавать в виде обычных объектов, а ответы в формате JSON разбираются автоматически.

Библиотека принимает любую схему, соответствующую спецификации Standard Schema, в том числе схемы из zod, valibot и arktype. Если передать схему, ответ проверяется и возвращается с выведенным из неё типом; при несовпадении выбрасывается ResponseValidationError. По умолчанию ошибки для ответов с неуспешным статусом выбрасываются как ResponseError; поведение reject и parseRejected можно настроить.

Также библиотека поддерживает повторы запросов с настраиваемыми количеством попыток, задержкой и условиями, таймауты для отдельных запросов, хуки жизненного цикла и колбэки для отслеживания прогресса загрузки и скачивания, а также потоковой передачи данных. Пакет опубликован в npm под именем up-fetch и работает в браузерах, Node.js, Bun, Deno, Cloudflare Workers и Vercel Edge Runtime.

Ключевые возможности

  • 01Валидация по Standard Schema с помощью zod, valibot, arktype и других совместимых библиотек
  • 02Обычные объекты для параметров запроса и тел запросов с автоматической сериализацией в JSON
  • 03Повторы запросов с настраиваемым количеством попыток, задержкой и условиями
  • 04Таймауты по умолчанию и для отдельных запросов
  • 05Отслеживание прогресса загрузки и скачивания, а также колбэки потоковой передачи данных
  • 06Хуки жизненного цикла для запросов, ответов, успешного выполнения, ошибок и повторов

Сценарии использования

  • Создание типизированного API-клиента во frontend-приложении на TypeScript с runtime-валидацией ответов
  • Добавление повторов запросов и таймаутов при обращении к ненадёжным сторонним API
  • Отображение индикаторов прогресса загрузки или скачивания в веб-приложении
  • Обработка потоковых ответов, например вывода AI-чата

Быстрый старт

  1. 1

    Установите пакет из npm

    npm i up-fetch
  2. 2

    Создайте экземпляр upfetch, оборачивающий нативный fetch

  3. 3

    Выполните запрос с необязательной проверкой схемы

Что важно знать

  • Для проверки схемы требуется отдельная библиотека, например zod или valibot.

Темы

Частые вопросы

Что такое up-fetch?
Конструктор TypeScript-клиента для fetch с валидацией по схемам, типизированными ответами, повторами запросов, таймаутами и отслеживанием прогресса. upfetch — конструктор клиента для fetch, который оборачивает нативный API fetch. Вы создаёте экземпляр с параметрами по умолчанию, например baseUrl, headers, timeout и настройками повторов, а затем вызываете его как fetch. Параметры запросов и тела можно передавать в виде обычных объектов, а ответы в формате JSON разбираются автоматически.
up-fetch можно использовать бесплатно? Какая у него лицензия?
up-fetch распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
up-fetch всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в up-fetch — 1 сент. 2026 г..
Для чего можно использовать up-fetch?
Создание типизированного API-клиента во frontend-приложении на TypeScript с runtime-валидацией ответов Добавление повторов запросов и таймаутов при обращении к ненадёжным сторонним API Отображение индикаторов прогресса загрузки или скачивания в веб-приложении Обработка потоковых ответов, например вывода AI-чата
Как установить up-fetch?
Установите пакет из npm: npm i up-fetch Создайте экземпляр upfetch, оборачивающий нативный fetch Выполните запрос с необязательной проверкой схемы
Где скачать up-fetch?
Исходный код и инструкции по установке — на GitHub: https://github.com/L-Blondy/up-fetch

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты