Примеры
Целевые, готовые к копированию сниппеты для паттернов, которые встречаются часто, но не вписываются в основной обзорный материал на странице Обзор. Каждый файл самодостаточен и снабжён комментариями.
Импортируют "rest-pipeline-js" так же, как это делал бы потребитель пакета (после npm install rest-pipeline-js) — они не запускаются как часть тестового набора или сборки репозитория. Для рабочего интерактивного приложения см. страницу Демо.
| Файл | Показывает |
|---|---|
pagination-fanout.ts | Параллельный fan-out множества постраничных запросов с ограничением concurrency, вместо открытия сотен соединений одновременно. |
pagination-stream.ts | paginate()/flattenPages()/paginateAll() — курсорная или offset-пагинация как асинхронный итератор, отдельно или как источник StreamStageConfig. |
edge-fetch-adapter.ts | Кастомный HttpAdapter на нативном fetch для Cloudflare Workers / Deno / других сред без Node-версии axios. |
file-upload.ts | Загрузка FormData с onUploadProgress/onDownloadProgress через транспорт axios по умолчанию, плюс набросок реализации прогресса загрузки в кастомном адаптере на fetch. |
sse-stream.ts | Шаг StreamStageConfig, читающий эндпоинт Server-Sent Events кусок за куском. |
websocket-stage.ts | Шаг WebSocketStageConfig поверх постоянного соединения — onOpen/onMessage/onClose/onError, closeOn, и заметка о замене createWebSocket для Node <22. |
redis-cache-store.ts | CacheStore на основе Redis, чтобы закэшированные ответы были общими для нескольких серверных инстансов, а не жили в памяти одного процесса. |
redis-rate-limiter-store.ts | RateLimiterStore на основе Redis, чтобы ограничение частоты было общим для серверных инстансов, а не применялось каждым отдельно (что умножает реальный лимит на количество инстансов). |
proactive-rate-limit-throttling.ts | Использование rateLimit.onRateLimitHeaders для троттлинга по заголовкам ответа X-RateLimit-*/RateLimit-* ещё до получения 429, вместо реакции только постфактум. |
redis-circuit-breaker-store.ts | CircuitBreakerStore на основе Redis, чтобы состояние open/closed/half-open было общим для серверных инстансов, а не требовало от каждого своих failureThreshold сбоев для размыкания. |
opentelemetry-tracing.ts | Генерация заголовка W3C traceparent плюс хук TracingProvider (утиная типизация под Span API OpenTelemetry) для подключения реального бэкенда трассировки, включая корреляцию запросов с runId пайплайна. |
idempotent-mutations.ts | Отправка заголовка Idempotency-Key на изменяющих запросах, вручную или автогенерируемого RequestExecutor через повторные попытки. |
zod-validation.ts | Адаптер withZodSchema(), превращающий схему Zod (или структурно совместимую) в PipelineStageConfig.validateInput/validateOutput. |
mock-adapter.ts | createMockAdapter() (из rest-pipeline-js/testing) для тестирования кода, использующего этот пакет, без реального backend — сопоставление маршрутов, динамические ответы и последовательности ответов для проверки повторов. |
offline-queue.ts | HttpConfig.offlineQueue — постановка изменяющих запросов в очередь в офлайне и их повтор (с тем же Idempotency-Key) после восстановления связи, с persistAdapter на основе localStorage. |