柯里化复用API基础配置的核心是分层预设固定参数:先绑定baseURL生成服务实例,再注入动态认证信息,最后传入endpoint与业务选项;同时内置默认method、headers及body序列化,并可结合memoize缓存高频读接口。

在 API 请求中用柯里化复用基础配置,核心是把固定项(如 baseURL、认证头、默认 method)提前绑定,生成可复用的专用请求函数,避免重复传参、降低出错率、提升可读性。
用柯里化预设 baseURL 和通用 headers
把最稳定的部分(域名、版本路径、认证信息)作为前置参数固化。推荐参数顺序为:baseURL → endpoint → options,这样逻辑清晰、组合自然:
- 先锁定服务地址:const apiV1 = request('https://api.example.com/v1')
- 再生成具体接口:const getUser = apiV1('/users/:id')
- 最后控制细节:getUser({ method: 'GET', headers: { Authorization: 'Bearer xxx' } })
这种方式比手写闭包(如 const api = (url) => fetch(`https://v1/${url}`))更安全——baseURL 不被硬编码进模块作用域,可跨项目复用,也方便单元测试。
分层绑定认证与业务参数
真实场景中,token 或租户 ID 往往随用户登录态变化。可用多级柯里化分层处理:
立即学习“Java免费学习笔记(深入)”;
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 第一层固定 baseURL 和全局 headers(如 Content-Type)
- 第二层注入动态 token:
const authApi = apiV1('Bearer ' + token) - 第三层才传 endpoint 和业务数据:
authApi('/orders')({ method: 'POST', body: order })
这种结构让「认证」和「业务」解耦,切换用户时只需重造 authApi,不影响下游调用方式。
与默认配置合并,减少冗余传参
多数请求用 GET、带 JSON 头、自动序列化 body。可在柯里化函数内部做合理默认:
- options 参数设默认值:
(options = { method: 'GET', headers: {} }) - 自动补全 header:
headers = { 'Content-Type': 'application/json', ...options.headers } - 自动处理非字符串 body:
if (options.body && typeof options.body !== 'string') { options.body = JSON.stringify(options.body) }
这样调用时只需写 apiV1('/users')( { body: { name: 'Alice' } } ),不用每次重复声明 method 和 headers。
配合 memoize 缓存最终请求函数(按 endpoint + method 组合)
如果某些接口(如获取静态字典、用户权限)调用频繁且结果稳定,可在柯里化链末端加缓存:
- 对已绑定 baseURL 和 endpoint 的函数做 memoize:
const getCountries = memoize(apiV1('/dict/countries')) - 缓存键基于 options 中的 method 和 query 参数,避免 POST 和 GET 混淆
- 注意:memoize 要作用在“等待 options 的最后一级函数”上,否则缓存粒度太粗或失效
这样既保留柯里化的配置复用优势,又叠加了结果复用能力,适合读多写少的场景。

















