柯里化在网络请求封装中通过分层固化通用配置提升复用性:先固定baseurl,再注入模块专属headers,支持动态token读取、拦截器集成及多环境自动切换。

柯里化在网络请求封装中,核心是把通用配置(如 baseURL、headers、timeout)提前固化,让后续调用只聚焦业务路径和数据,不重复写配置。
用柯里化分层固化 baseURL 和认证头
先固定基础地址,再为不同模块注入专属 header,避免每个请求都手动拼接或重复设置:
- 定义基础函数:
const createAPI = (baseURL) => (headers) => (url, config = {}) => axios({ baseURL, headers, url, ...config }) - 生成模块专用实例:
const userAPI = createAPI('https://api.example.com')({ 'Authorization': `Bearer ${token}` }) - 调用时极简:
userAPI('/users/123')或userAPI('/users', { method: 'POST', data: { name: 'Tom' } })
支持动态 token 和拦截逻辑的柯里化增强
如果 token 需实时读取(如从 localStorage 或 pinia store),可在最内层函数中获取,保证每次请求都用最新值:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
const authAPI = (baseURL) => (url, config = {}) => { const token = localStorage.getItem('token'); return axios({ baseURL, url, headers: { ...config.headers, Authorization: `Bearer ${token}` }, ...config }); }- 使用:
const getUser = authAPI('https://api.example.com')('/users/123');
与 Axios 实例配合,兼顾拦截器和柯里化优势
柯里化不替代 axios.create,而是补充其灵活性。可先创建带拦截器的实例,再用柯里化生成业务函数:
- 创建带统一错误处理的实例:
const apiClient = axios.create({ baseURL: '/api' }); apiClient.interceptors.response.use(null, err => { if (err.response?.status === 401) logout(); return Promise.reject(err); }); - 再柯里化封装:
const orderAPI = (url, config) => apiClient(url, config);—— 此时既保留拦截能力,又获得路径复用的简洁性
按环境自动切换 baseURL 的柯里化写法
开发、测试、生产环境共用同一套柯里化结构,只需在顶层传入对应地址:
const envAPI = (env) => { const conf = { dev: 'http://localhost:3000', test: 'https://test-api.example.com', prod: 'https://api.example.com' }; return createAPI(conf[env]); };- 使用:
const prodUserAPI = envAPI('prod')({ Authorization: '...' })('/users');
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










