柯里化封装 api 请求路径的核心是将固定部分(如基础 url、版本号)固化为函数参数,动态参数(如 id)延迟传入,提升可读性、复用性与类型安全性。

用柯里化封装 API 请求路径,核心是把固定部分(如基础 URL、版本号、公共前缀)提前固化,让每次调用只需传动态参数(如 ID、类型),既减少重复拼接,又提升可读性和复用性。
用柯里化预置基础路径
把协议、域名、版本等不变部分作为柯里化函数的首层参数,返回一个接收资源路径的函数:
const createApiUrl = (baseUrl) => (version) => (path) =>
`${baseUrl}/${version}${path}`;
// 使用
const apiUrl = createApiUrl('https://api.example.com')('v1');
console.log(apiUrl('/users')); // https://api.example.com/v1/users
console.log(apiUrl('/posts/123')); // https://api.example.com/v1/posts/123
进一步柯里化支持动态参数占位
在路径中预留变量位置(如 :id),再用柯里化生成带参数绑定能力的请求函数:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const makeEndpoint = (baseUrl) => (version) => (path) => {
return (params = {}) => {
const filledPath = path.replace(/:(\w+)/g, (_, key) => params[key] || '');
return `${baseUrl}/${version}${filledPath}`;
};
};
const userApi = makeEndpoint('https://api.example.com')('v1')('/users/:id');
console.log(userApi({ id: 42 })); // https://api.example.com/v1/users/42
console.log(userApi({ id: 'me' })); // https://api.example.com/v1/users/me
结合 fetch 封装成可执行的请求函数
把柯里化和实际请求逻辑结合,形成“配置即调用”的链式体验:
const request = (baseUrl) => (version) => (method) => (path) => async (data, params) => {
const url = `${baseUrl}/${version}${path.replace(/:(\w+)/g, (_, k) => params?.[k] ?? '')}`;
const config = { method, headers: { 'Content-Type': 'application/json' } };
if (data && method.toUpperCase() !== 'GET') {
config.body = JSON.stringify(data);
}
return fetch(url, config).then(r => r.json());
};
// 使用
const getUser = request('https://api.example.com')('v1')('GET')('/users/:id');
const createUser = request('https://api.example.com')('v1')('POST')('/users');
await getUser({ id: 100 }); // GET /v1/users/100
await createUser({ name: 'Alice' }); // POST /v1/users
配合工具函数提升类型与可维护性
实际项目中可搭配模板字符串解析、TS 类型推导或路径校验,比如加一层安全检查:
- 检测
:key是否在params中缺失,避免生成非法 URL - 对
baseUrl自动补斜杠,避免//错误 - 导出预设实例,如
prodApi = request('https://prod.api')('v2'),业务层直接调用
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










