通过yapi
的 swagger json schema 生成 Taro 或 Axios 接口
非yapi
的swagger可能会出现不兼容
"scripts": {
"build:api": "node ./scripts/buildApi.js"
},
// source(必填) swagger schema 文件
// apiPath(必填) api生成文件
// type = 'axios'|'taro'
// host = 请求前缀
const path = require('path');
const swaggerJsonSchemaRequest = require('auto-request');
const host = 'https://test'
const source = path.join(__dirname, './../example/yapi.json');
const apiPath = path.join(__dirname, './../api/');
new SwaggerJsonSchemaRequest(source, 'axios', {
host: 'https://test/api',
preFix: ''
}).generateFile(apiPath)
生成的文件 接口文件: {path}/index.ts 定义文件: {path}/index.define.ts
├── api
│ ├── index.define.ts
│ └── index.ts
├── assets
│ └── api.json
|── scripts
| └── buildApi.js
|
// index.ts
import axios from 'axios';
import {
ApiverificationsGetParams,
ApiverificationsGetResponse,
ApicontestantPostParams,
ApicontestantPostResponse,
ApipersonGetParams,
ApipersonGetResponse,
ApiloginPostParams,
ApiloginPostResponse,
} from './index.define';
export const ApiverificationsGet = <P = ApiverificationsGetParams, T = ApiverificationsGetResponse>(
params: P,
options?: any
): Promise<T> => {
return axios.request({
url: `/api/verifications`,
method: 'get',
params: params,
...options,
});
};
// index.define.ts
* tslint:disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/
export interface Api {
ApiverificationsGetParams?: ApiverificationsGetParams;
ApiverificationsGetResponse?: ApiverificationsGetResponse;
ApicontestantPostParams?: ApicontestantPostParams;
ApicontestantPostResponse?: ApicontestantPostResponse;
ApipersonGetParams?: ApipersonGetParams;
ApipersonGetResponse?: ApipersonGetResponse;
ApiloginPostParams?: ApiloginPostParams;
ApiloginPostResponse?: ApiloginPostResponse;
[k: string]: unknown;
}
export interface ApiverificationsGetParams {
/**
* 手机号码
*/
mobile: string;
[k: string]: unknown;
}
export interface ApiverificationsGetResponse {
[k: string]: unknown;
}
export interface ApicontestantPostParams {
/**
* 工号(没有可为空)
*/
code: string;
/**
* 名字
*/
name: string;
/**
* 手机号
*/
mobile: string;
/**
* 事业部
*/
business_unit: string;
/**
* 抖音号
*/
tiktok_id: string;
/**
* 小红书号
*/
red_booklet_id: string;
[k: string]: unknown;
}
export interface ApicontestantPostResponse {
[k: string]: unknown;
}
export interface ApipersonGetParams {
/**
* 手机号码
*/
mobile: string;
[k: string]: unknown;
}