swagger-api-generator
swagger接口前端代码生成命令行工具
生成结果
TS
index.ts
import './indexTypes';
import funcRequest from './request';
import { RequestOptionsInit } from 'umi-request';
const request = funcRequest({ baseURL: '/mock' });
type CustomConfigProps = RequestOptionsInit;
export const myHandsomeApiGET = (
paramConfig: myHandsomeApiGETProps,
customConfig: CustomConfigProps = {},
): Promise<myHandsomeApiGETResProps> =>
request<myHandsomeApiGETResProps>({
url: '/my/handsome/api',
method: 'get',
params: paramConfig,
...customConfig,
});
indexTypes.ts
interface anyFields {
[key: string]: any;
}
interface myHandsomeApiGETProps {
id: string | number;
}
interface myHandsomeApiGETResProps {
name: string;
count: number;
type: string;
}
JS
import funcRequest from './request';
const request = funcRequest({ baseURL: '/mock' });
export const myHandsomeApiGET = (
paramConfig,
customConfig = {},
) =>
request({
url: '/my/handsome/api',
method: 'get',
params: paramConfig,
...customConfig,
});
安装
npm install -D swagger-api-gen
用法
命令行
全局安装
api url=http://example.com/v2/api-docs
本地安装
npx api url=http://example.com/v2/api-docs
npm script使用
1.配置package.json
{
"script": {
"api": "api url=http://example.com/v2/api-docs"
}
}
2.运行 npm run api
或 yarn api
完整示例
api url=http://example.com/v2/api-docs tarDir=./src/api fileName=index fileType=ts template='import request from "./request";' expandParams=true filter=pet client=true mock=true module=true
参数说明
参数 | 必传 | 说明 | 默认 | 示例 |
---|
url | 是 | swagger api地址 | - | url=http://example.com/v2/api-docs |
tarDir | 否 | 目标目录 | 当前目录 | tarDir=./src/api |
fileName | 否 | 生成文件名,当module选项为true时不生效 | swagger-api | fileName=index |
fileType | 否 | 生成文件类型js 或ts | ts | fileType=js |
template | 否 | 顶部自定义的代码段 | - | template='import request from "./request";' |
expandParams | 否 | 是否展开传参 | true | expandParams=true |
filter | 否 | 通过正则匹配接口path来筛选需要生成的接口 | - | filter=pet |
client | 否 | 是否生成请求客户端 | false | client=true |
mock | 否 | 是否生成mock请求 | false | mock=true |
module | 否 | 是否分模块 | false | module=true |
注意
使用 git for windows
终端时,参数首位的 /
会被解析为 $GIT_HOME/
解决方案如下
filter=//pet
MSYS_NO_PATHCONV=1 filter=/pet/find
filter=\\/pet/find