用途:api-client 技能围绕原生 fetch() 总结了一组 API 通信模式,用于构建需要稳健错误处理、重试与缓存的接口集成。核心理念是仅用原生 fetch,不使用 axios 等库;错误显式抛出;用 AbortController 取消请求;优雅处理网络问题。
主要能力:提供带类型 JSDoc 的 api() 基础封装,统一错误处理并抛出 ApiError(包含状态码、状态文本与解析后的错误体);204 空响应返回 null。提供错误处理模式,可按状态码与错误体类型(校验、鉴权、未找到、服务端)分别处理,并集成错误上报(sendBeacon)。提供 fetchWithRetry 指数退避重试,可配置重试次数、初始延迟与可重试状态判定。提供 fetchWithTimeout 超时模式、组件卸载时中止在途请求。提供带 TTL 的内存缓存、缓存失效(按 URL 或正则)、GET 请求去重,以及基于 localStorage 的离线队列(上线后自动 flush)。最后给出组合全部能力的 createApiClient,暴露 get/post/put/delete 与 invalidateCache。
使用方式:按需引入上述函数,调用 api(endpoint, options) 发起请求;用 try/catch 捕获 ApiError 并按 status 分流;对不稳定端点使用 fetchWithRetry(url, options, { retries, delay, retryOn });缓存用 createCachedFetch(ttl) 或 createCacheManager(ttl);离线场景用 createOfflineQueue();完整客户端用 createApiClient({ baseUrl, timeout, cacheTtl, retries })。
适用场景与限制:适合前端、Web Components 中调用 REST 接口,处理网络失败、超时、重复请求与离线提交。文档未提供具体安装命令、依赖包或平台限制;示例以 JavaScript/JSDoc 为主,未涉及具体框架适配。仅对幂等或安全操作重试,缓存键需包含全部相关参数。