/** * HTTP Client - 统一HTTP客户端 * * 提供统一的HTTP请求处理功能 */ /** * HTTP请求配置 */ export interface HttpRequestConfig { method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; headers?: Record; timeout?: number; maxRetries?: number; retryDelay?: number; signal?: AbortSignal; } /** * HTTP响应 */ export interface HttpResponse { data: unknown; status: number; statusText: string; headers: Record; url: string; } /** * HTTP客户端配置 */ export interface HttpClientConfig { baseUrl?: string; timeout?: number; maxRetries?: number; retryDelay?: number; defaultHeaders?: Record; /** * Stream idle timeout (ms) after response headers are received. * When upstream stream produces no bytes for this long, abort. */ streamIdleTimeoutMs?: number; /** * Stream headers timeout (ms) before the initial response headers are received. */ streamHeadersTimeoutMs?: number; } export declare class HttpClient { private config; private defaultConfig; constructor(config?: HttpClientConfig); /** * 发送GET请求 */ get(url: string, headers?: Record): Promise; /** * 发送POST请求 */ post(url: string, data?: unknown, headers?: Record, signal?: AbortSignal): Promise; /** * 发送POST请求并返回可读流(适用于 SSE ) */ postStream(url: string, data?: unknown, headers?: Record, streamConfig?: { timeoutMs?: number; idleTimeoutMs?: number; headersTimeoutMs?: number; }, signal?: AbortSignal): Promise; private wrapStreamWithTimeouts; /** * 发送PUT请求 */ put(url: string, data?: unknown, headers?: Record, signal?: AbortSignal): Promise; /** * 发送DELETE请求 */ delete(url: string, headers?: Record, signal?: AbortSignal): Promise; /** * 发送PATCH请求 */ patch(url: string, data?: unknown, headers?: Record, signal?: AbortSignal): Promise; /** * 通用请求方法 */ private request; /** * 发送单个请求 */ private sendSingleRequest; private attachExternalAbortSignal; /** * 为 HTTP 错误构造截断后的错误消息,避免在控制台打印过长的上游返回体。 * 完整 body 仍通过 err.response.raw 保留在错误详情中。 */ private buildHttpErrorMessage; /** * 构建完整URL */ private buildUrl; /** * 构建请求头 */ private buildHeaders; /** * 判断是否应该重试 */ private shouldRetry; /** * 创建Provider错误 */ private createProviderError; }