API Proxy Mock
基于 Node.js 的轻量级 HTTP 代理 + 本地 Mock:所有配置(路由映射、服务器参数、接口列表)统一存储在 SQLite,mock 内容保存在 mock/ 目录文件中,其余请求按配置(HTTP/HTTPS)转发到真实后端。通过 __admin 管理面板进行可视化管理。
功能说明
- 代理转发:未命中 Mock 的请求会转发到
config.targetHost(由targetHttps决定 HTTP/HTTPS,targetPort可配)。 - 本地 Mock:命中路由时直接读取
mock目录下的文件作为响应体。 - SQLite 存储:路由列表、接口列表、服务器配置全部存储在
data/mock-mappings.sqlite3。 - Mock 总开关:
mockEnabled为false时不拦截任何 Mock 路由,全部走代理。 - Mock 响应:带简单 CORS 头,以及
X-Mock-Source、X-Mock-Timestamp便于排查。 - 管理面板:访问
/__admin进入 Element UI 可视化管理界面。
环境要求
- Node.js(建议 18+)
- 依赖见
package.json:typescript、ts-node、@types/node(仅开发/类型)、sqlite3
安装与启动
npm install
推荐使用 npm 脚本:
npm run dev
# 或
npm start
等价于:
npx ts-node --project tsconfig.json ./index.api.ts
类型检查(不生成 JS):
npm run typecheck
启动成功后,控制台会输出本地监听地址、目标主机等。
数据存储
所有配置统一存储在 SQLite 数据库 data/mock-mappings.sqlite3 中:
| 表名 | 用途 |
|---|---|
route_mappings |
路由 → mock 文件映射 + 状态码 |
api_list |
接口名称清单 |
mock_files |
mock 文件路径 + 别名 |
server_config |
服务器配置(端口、目标主机等) |
首次启动时,如果 mock/api-list.json 存在,会自动迁移导入到数据库。
管理接口
将 <proxyPort> 换为实际监听端口:
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
http://localhost:<proxyPort>/__config |
查看当前路由与配置 |
POST |
http://localhost:<proxyPort>/__config |
保存配置(服务器配置 + 路由) |
POST |
http://localhost:<proxyPort>/__reload-config |
从数据库重新加载配置 |
POST |
http://localhost:<proxyPort>/__routes |
动态新增单个路由与 mock 文件 |
GET |
http://localhost:<proxyPort>/__api-list |
获取接口列表 |
GET/POST/DELETE |
http://localhost:<proxyPort>/__mock-files |
管理 mock 文件 |
GET |
http://localhost:<proxyPort>/__admin |
配置管理页面(Element UI) |
POST /__routes 请求示例
{
"route": "/api/new/mock",
"filePath": "mock/new-api.json",
"fileContent": "{\"code\":0,\"message\":\"ok\"}",
"overwrite": false
}
POST /__config 请求示例
{
"config": {
"proxyPort": 8879,
"targetHost": "192.168.3.9",
"targetPort": 8092,
"targetHttps": false,
"defaultContentType": "application/json",
"mockEnabled": true
}
}
TypeScript 与编译说明
- 项目根目录包含
tsconfig.json,请使用tsc -p .或npm run typecheck做整项目检查。 - 不要使用
tsc .\index.api.ts这类「命令行附带单个文件」的方式,否则会与tsconfig.json冲突并报 TS5112。
目录说明
index.api.ts:服务入口。src/:模块化源码(types、db、config、proxy、admin-handlers 等)。mock/:Mock 响应文件(文本内容原样返回,按需自行写成 JSON 等)。data/mock-mappings.sqlite3:SQLite 数据库(路由映射、接口列表、服务器配置)。
Description
1.0.0
Latest
Languages
JavaScript
73.3%
HTML
14.2%
TypeScript
12.5%