Skip to content

Latest commit

 

History

History
149 lines (132 loc) · 3.16 KB

README.md

File metadata and controls

149 lines (132 loc) · 3.16 KB

简介

通过yapi的 swagger json schema 生成 Taro 或 Axios 接口

yapi的swagger可能会出现不兼容

配置 scripts

    "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;
}