Skip to content

@yh-ui/request

A modern HTTP request library for enterprise applications, AI applications, and general-purpose scenarios

Feature Coverage

CapabilityStatusNotes
Basic Requests✅ CompleteGET/POST/PUT/DELETE, supports generics & inference
Interceptors✅ CompleteRequest/response interceptors, error handling
Caching✅ CompleteIn-memory, LocalStorage, IndexedDB, SWR
HTTP Cache Protocol✅ CompleteETag, Last-Modified conditional requests
Retry✅ CompleteExponential backoff, custom retry conditions
Concurrency Control✅ CompleteDeduplication, debounce, throttle
Upload/Download✅ CompleteProgress tracking, pause/resume
WebSocket✅ CompleteConnection management
GraphQL✅ CompleteQuery builder
Security✅ CompleteCSRF protection, token auto-refresh
Vue Hooks✅ CompleteuseRequest, useSSE, useAIStream, useQueue, etc.
SSR Support✅ CompleteSSR compatible
Adapter Architecture✅ CompleteBrowser/Node.js/Deno/Bun/Edge
Plugin System✅ CompleteExtensible plugins

Compared with Mainstream Options

Feature@yh-ui/requestAxios@tanstack/query
PositioningRequest lib + HooksPure HTTP clientServer-state management
TypeScript
SWR Caching❌ (wrap yourself)✅ built-in
Streaming (SSE)✅ useSSE❌ (wrap yourself)
AI Streaming Output✅ useAIStream
Request Queue✅ useQueue / useRequestQueue
Plugin System✅ (devtools, etc.)
Cross-Platform❌ browser-only
Enterprise Security✅ CSRF/Token❌ (implement yourself)

Core Advantages

1. Strict Type Safety

Full-chain TypeScript type inference, from request to response, zero any, farewell to type errors.

typescript
// Auto-infer response type
const { data } = await request.get<User>('/api/users/1')
// data: User ✓

// Path parameter type safety
type Params = PathParams<'/api/users/:id/:commentId'>
// => { id: string; commentId: string } ✓

2. Powerful Vue Hooks

One line of code handles loading states, error handling, cache updates - no more repetitive boilerplate.

typescript
const { data, loading, error, run } = useRequest(() => fetchUser(id), {
  manual: false,
  defaultParams: [1],
  onSuccess: (data) => console.log(data)
})

3. Enterprise-Grade Features Out of the Box

No additional configuration needed - request retry, concurrency control, progress monitoring, security protection and more come ready to use.

  • Request retry with exponential backoff
  • Request deduplication and debouncing
  • Concurrency control
  • Upload/Download progress
  • CSRF protection and token auto-refresh

Features

  • TypeScript First: Full type inference throughout the chain, zero any, generics throughout request/response
  • Adapter Architecture: Pluggable underlying implementation, unified API across platforms
  • Composition over Inheritance: Plugin-based, middleware-based, load on demand
  • Built-in Observability: Request ID, metrics, debug mode out of the box

Installation

bash
npm install @yh-ui/request
bash
yarn add @yh-ui/request
bash
pnpm add @yh-ui/request
bash
bun add @yh-ui/request

Quick Start

typescript
import { request } from '@yh-ui/request'

// GET request
const { data } = await request.get('/api/users')

// POST request
const { data } = await request.post('/api/users', { name: 'John' })

// With generics
interface User {
  id: number
  name: string
}
const { data } = await request.get<User>('/api/users/1')

Feature Overview

FeatureDescription
Request ConfigComplete request configuration options
Response HandlingResponse data parsing and type inference
InterceptorsRequest/Response interceptors
Cache StrategyIn-memory, persistent, and SWR caching
HTTP Cache ProtocolETag, Last-Modified conditional requests
SecurityCSRF protection, token auto-refresh
AdapterCross-platform adapters (Browser/Node/Deno/Bun/Edge)
GraphQLGraphQL query builder and client
WebSocketWebSocket connection management
useRequestPowerful Vue request Hook
useSSEServer-Sent Events streaming
useAIStreamAI streaming output support

Next Steps

Released under the MIT License.