封装一个带默认配置、错误拦截和响应标准化的 fetch 函数即可实现全局统一客户端:自动加 token、统一 content-type、json 解析、非 2xx 主动抛错;导出 get/post/put/delete 等语义化方法,复用底层 request;支持超时、日志、鉴权、错误分类处理;可模块导入或挂载到框架上下文。

直接封装一个带默认配置、错误拦截和响应标准化处理的 fetch 函数,就能实现全局统一客户端——不需要第三方库,也不依赖框架。
统一基础请求函数
核心是把重复逻辑收拢到一个函数里:自动加 Token、统一 Content-Type、自动解析 JSON、统一抛错规则。
- 用
async/await写法更清晰,避免嵌套.then() - 默认 baseURL 和 headers 提前写死或从环境变量读取,避免每个请求都拼地址
- 对非 2xx 状态码主动
throw错误,让上层用try/catch统一捕获 - 响应体一律走
response.json(),失败时也明确提示(比如空响应或非法 JSON)
支持 GET/POST 等快捷方法
在基础函数之上导出语义化方法,业务代码调用更直观:
-
get(url, { params }):自动用URLSearchParams拼接查询参数 -
post(url, data):自动序列化data并设置Content-Type: application/json -
put、delete同理,保持风格一致 - 所有方法最终都复用同一个底层
request(),避免逻辑分散
注入通用行为(如鉴权与超时)
真正体现“全局”价值的地方,在于可插拔的横切逻辑:
- 从 localStorage 或 pinia/vuex 中读取 token,自动加到
Authorization请求头 - 给每个请求加默认
timeout(需自行封装 AbortController,因为原生 fetch 不支持 timeout 参数) - 添加简单日志:开发环境下打印请求路径和耗时
- 错误分类处理:401 跳登录页,403 提示无权限,500 弹系统告警
导出为模块并全局挂载(可选)
如果项目中大量使用,可以把它挂到全局对象或 Vue/React 的上下文里:
- ESM 方式:在
http.js中导出函数,各处import { get, post } from '@/utils/http' - Vue 3:通过
app.config.globalProperties.$http = { get, post }挂载 - 不推荐污染
window,但小型项目可设window.$api = { get, post }
这样封装后,发请求就变成一行:const user = await get('/users/123'),所有网络细节都被屏蔽了。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











