API Reference
This document provides a complete API reference for Hook-Fetch, including all methods, configuration options, and type definitions.
Main Exports
import hookFetch, {
get, post, put, patch, del, head, options, upload, request
} from 'hook-fetch';
Default Export
hookFetch(url, options?)
The main request function.
Parameters:
url
(string): The request URLoptions
(RequestOptions, optional): Request configuration
Returns: HookFetchRequest<T>
- Request object
Example:
const response = await hookFetch('https://api.example.com/users').json();
hookFetch.create(options)
Creates a configured Hook-Fetch instance.
Parameters:
options
(BaseOptions): Instance configuration
Returns: HookFetch
- Instance object
Example:
const api = hookFetch.create({
baseURL: 'https://api.example.com',
timeout: 5000,
headers: {
'Content-Type': 'application/json'
}
});
Convenience Methods
get(url, params?, options?)
Makes a GET request.
Parameters:
url
(string): Request URLparams
(object, optional): Query parametersoptions
(GetOptions, optional): Request configuration
Example:
const users = await get('/users', { page: 1, limit: 10 }).json();
post(url, data?, options?)
Makes a POST request.
Parameters:
url
(string): Request URLdata
(any, optional): Request body dataoptions
(PostOptions, optional): Request configuration
Example:
const newUser = await post('/users', { name: 'John', email: 'john@example.com' }).json();
put(url, data?, options?)
Makes a PUT request.
patch(url, data?, options?)
Makes a PATCH request.
del(url, options?)
Makes a DELETE request.
head(url, params?, options?)
Makes a HEAD request.
options(url, params?, options?)
Makes an OPTIONS request.
upload(url, data?, options?)
Makes a file upload request.
Example:
const result = await upload('/upload', {
file: fileInput.files[0],
name: 'My File'
}).json();
HookFetch Instance Methods
use(plugin)
Registers a plugin.
Parameters:
plugin
(HookFetchPlugin): Plugin object
Returns: this
- The instance itself (supports method chaining)
Example:
api.use(myPlugin());
abortAll()
Aborts all ongoing requests.
HookFetchRequest Methods
Response Methods
json()
- Parse response as JSONtext()
- Parse response as textblob()
- Parse response as BlobarrayBuffer()
- Parse response as ArrayBufferformData()
- Parse response as FormDatabytes()
- Parse response as bytes
Stream Methods
stream()
- Get response as stream
Control Methods
abort()
- Abort the requestretry()
- Retry the request
Configuration Options
BaseOptions
interface BaseOptions {
baseURL?: string; // Base URL for requests
timeout?: number; // Request timeout in milliseconds
headers?: HeadersInit; // Default headers
plugins?: HookFetchPlugin[]; // Plugin list
withCredentials?: boolean; // Include credentials
}
RequestOptions
interface RequestOptions<P, D, E> {
method?: RequestMethod; // HTTP method
params?: P; // Query parameters
data?: D; // Request body data
headers?: HeadersInit; // Request headers
timeout?: number; // Request timeout
extra?: E; // Extra data for plugins
withCredentials?: boolean; // Include credentials
qsArrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma';
}
Plugin System
HookFetchPlugin Interface
interface HookFetchPlugin<T, E, P, D> {
name: string; // Plugin name (required)
priority?: number; // Priority (optional, default 0)
beforeRequest?: BeforeRequestHandler<E, P, D>;
afterResponse?: AfterResponseHandler<T, E, P, D>;
beforeStream?: BeforeStreamHandler<E, P, D>;
transformStreamChunk?: TransformStreamChunkHandler<E, P, D>;
onError?: OnErrorHandler<E, P, D>;
onFinally?: OnFinallyHandler<E, P, D>;
}
Plugin Lifecycle
- beforeRequest - Before request is sent
- beforeStream - Before stream processing (stream requests only)
- transformStreamChunk - Transform stream chunks (stream requests only)
- afterResponse - After response is received
- onError - Error handling
- onFinally - Final cleanup
TypeScript Support
Hook-Fetch provides complete TypeScript support with generic types:
interface User {
id: number;
name: string;
email: string;
}
// Type-safe request
const user = await api.get<User>('/users/1').json();
console.log(user.name); // TypeScript provides full type hints
Error Handling
ResponseError
interface ResponseError<E = any> extends Error {
response?: Response;
request?: Request;
config?: RequestConfig<any, any, E>;
status?: number;
statusText?: string;
}
Examples
Basic Usage
// Simple GET request
const data = await hookFetch('https://api.example.com/data').json();
// POST with data
const result = await hookFetch('https://api.example.com/users', {
method: 'POST',
data: { name: 'John', email: 'john@example.com' }
}).json();
Instance Usage
const api = hookFetch.create({
baseURL: 'https://api.example.com',
headers: { 'Authorization': 'Bearer token' }
});
const users = await api.get('/users').json();
const newUser = await api.post('/users', userData).json();
Plugin Usage
const loggerPlugin = {
name: 'logger',
beforeRequest: (config) => {
console.log(`Making request to: ${config.url}`);
return config;
}
};
api.use(loggerPlugin);
Streaming Usage
for await (const chunk of api.get('/stream').stream()) {
console.log('Received:', chunk.result);
}
This covers the main API surface of Hook-Fetch. For more detailed examples and advanced usage, see the other documentation sections.