javascript 中用柯里化处理 api 公共前缀,核心是固化 base url 生成预置前缀的请求函数,支持动态环境与多版本适配,并可进一步柯里化固定 http 方法,配合 typescript 提升类型安全性。

在 JavaScript 中,用柯里化处理 API 请求的公共前缀,核心是把基础 URL 提前固化,后续每次调用只需传入路径和参数,避免重复拼接、减少出错、提升复用性。
用柯里化封装 base URL
把 fetch 或 axios 的请求函数改造为接受 base URL 后返回一个预置前缀的新函数:
const createApiClient = (baseUrl) => {
return (path, options = {}) => {
const url = `${baseUrl}${path}`;
return fetch(url, {
headers: { 'Content-Type': 'application/json', ...options.headers },
...options
});
};
};
// 使用
const api = createApiClient('https://api.example.com/v1');
api('/users').then(r => r.json());
api('/posts', { method: 'POST', body: JSON.stringify({ title: 'Hello' }) });
支持动态环境与多版本前缀
结合环境变量或配置,让柯里化函数能适配不同部署场景(如开发/生产)或 API 版本:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
const getBaseUrl = () => {
if (process.env.NODE_ENV === 'development') return 'http://localhost:3000/api';
if (process.env.API_VERSION === 'v2') return 'https://api.example.com/v2';
return 'https://api.example.com/v1';
};
const api = createApiClient(getBaseUrl());
进一步柯里化:固定方法 + 前缀 + 路径
如果某些接口常用特定方法(如 GET),可再柯里化一层,直接生成语义化函数:
const createApiMethod = (baseUrl) => ({
get: (path) => fetch(`${baseUrl}${path}`).then(r => r.json()),
post: (path, data) => fetch(`${baseUrl}${path}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
}).then(r => r.json())
});
const api = createApiMethod('https://api.example.com/v1');
api.get('/users/123');
api.post('/comments', { content: 'Nice!' });
配合 TypeScript 更安全(可选)
若项目使用 TypeScript,可为柯里化函数添加类型提示,约束 path 格式或返回类型,避免运行时拼错路径:
type ApiClient = (path: `/users` | `/posts` | `/comments`, options?: RequestInit) => Promise<response>;
const createApiClient = (baseUrl: string): ApiClient => {
return (path, options) => fetch(`${baseUrl}${path}`, options);
};
</response>
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










