lzyapi2js
v0.2.0
Published
将 YAPI 导出的 JSON 转为符合项目规范的 Axios 请求 JS 代码
Readme
YAPI JSON → Axios 代码生成器
将 YAPI 导出的接口 JSON 批量转换为符合项目约定的 Axios JS 代码。
特性
- 灵活输入:
- 支持本地文件(通配符
JSON/*.json、Windows 反斜杠路径、带引号路径) - 支持远程 URL(如
http://yapi.example.com/export.json)
- 支持本地文件(通配符
- 类型增强:
- 智能推导 Request Body、Response Body 及 Query/Path 参数类型
- 生成详细的 JSDoc 注释(支持嵌套对象、数组、枚举等),告别
any - 自动区分有无 Body 的接口,避免生成多余的参数注释
- 自动化处理:
- 自动解析
path/method/req_query/req_params/req_body_other/res_body/title/desc - 根据 REST 方法生成
api.get/post/put/delete/patch - 路径占位参数自动替换(
/:id或{id}→${params.id})
- 自动解析
- 高度可配置:
- 可自定义模板与
baseUrl规则 - 支持 Prettier 格式化
- 可自定义模板与
npm 安装后使用
- 安装后可直接命令行调用:
lzyyapi --input JSON/*.json --out-dir dist --formatlzyyapi -i "http://yapi.demo/export.json" -o dist
命令行选项
--input, -i:输入源(默认:JSON/*.json)- 本地文件:支持 Glob 模式(如
*.json)或绝对/相对路径 - 远程 URL:以
http://或https://开头的地址
- 本地文件:支持 Glob 模式(如
--out-dir, -o:输出目录(默认:dist)--config, -c:配置文件路径(与默认配置合并)--template, -t:自定义模板文件路径(EJS)--ext:输出扩展名(js|ts,默认js+ JSDoc 提示)--base-url:固定baseUrl前缀(默认推断自文件名,如park-energy-condition→/park-energy-condition)--log-level:日志等级(info|warn|error|debug)--dry-run:预览生成内容不写盘--format:生成后格式化(依赖 Prettier 配置)
生成规则与模板约定
- 头部:
import api from "@/libs/HttpRequest";const baseUrl = "/<由文件名或配置决定>";
- 方法映射:
- GET/DELETE:有查询参数 →
api.get(url, { params });无 →api.get(url) - POST/PUT/PATCH:
- 同时有
body与params→api.<method>(url, body, { params }) - 仅
body→api.<method>(url, body) - 仅
params→api.<method>(url, undefined, { params }) - 都没有 →
api.<method>(url)
- 同时有
- GET/DELETE:有查询参数 →
- 函数命名:按
method + 路径分段(驼峰)生成;遇到重名自动去重 - JSDoc:包含
@description、@param(精准类型)与@returns(精准类型)
配置文件示例(yapi-gen.config.json)
{
"importApi": "@/libs/HttpRequest",
"baseUrlStrategy": "infer",
"groupBy": "file",
"fileNameCase": "kebab",
"methodStyle": "api",
"enablePrettier": true,
"outputExt": "js",
"templatePath": null
}示例输出(节选)
import api from "@/libs/HttpRequest";
const baseUrl = "/park-energy-condition";
/**
* @description 查询企业月度用电量,对比上一个月
* @returns {Promise<{ retCode?: number, msg?: string, data?: Array<{ time?: string, enterpriseCode?: string, common?: number }> }>} 响应数据
*/
export const getEleDashboardGetRentMonthUseWithComparePrev = () => {
const url = `${baseUrl}/eleDashboard/getRentMonthUseWithComparePrev`;
return api.get(url);
};
/**
* @description 获取电表集中器统计
* @param {{ id?: number, pageNum?: number, pageSize?: number, searchKey?: string }} [body] 请求体
* @returns {Promise<{ retCode?: number, data?: Object }>} 响应数据
*/
export const postElectricOverviewGetElectricControlDeviceOverview = (body) => {
const url = `${baseUrl}/electricOverview/getElectricControlDeviceOverview`;
return api.post(url, body);
};日志与错误
- 日志等级:
info|warn|error|debug,构建时输出 CLEAN/BUILD/CHMOD/SIZE/DONE/OUTPUTS - 常见异常:
- Schema 校验(draft-04)缺失 → 自动降级轻量校验并记录日志
- 路径参数缺失 → 生成函数调用需传入
params对应字段
