1.9.4 • Published 1 year ago

@oumi/swagger-api v1.9.4

Weekly downloads
-
License
none
Repository
github
Last release
1 year ago

@oumi/swagger-api

swagger接口拉取工具,可以生产json模拟数据和typescript声明文件。

安装

npm install @oumi/swagger-api

yarn add @oumi/swagger-api

示例

import Swagger from '@oumi/swagger-api';
const swagger = new Swagger(params);

swagger()
  .query({path: 'api/get', tag: 'V1.0.0'})
  .toResponseJSON()
  .toTypeScript()
  .toInterfaceTemp()

params参数

type: string | object

string:swagger的http地址;

object:swagger的json数据;

方法

query

模糊匹配api,参数:

  • path: type: string | string[] 【api路径】
  • tag: string 【版本号】
  • keyword: string 【api接口描述关键字】

toResponseJSON

根据查询结果转换成模拟数据。

.toResponseJSON(callbcak?: function);

回调函数的参数类型:

toTypeScript

根据查询结果转换成typescript的数据类型结构。

.toTypeScript(callbcak?: function);

回调函数的参数类型:

toInterfaceTemp

将上一步的数据结构,转换成typescript字符串模板,可以在这的回调生成API的.d.ts文件。

.toInterfaceTemp(callback?: function);

注意:该方法是生成ts文件,每个文件开始时都会清空,所以 callback 回调会调用多次。

回调函数的参数类型:

  • propsString: string;
  • resultString: string;

buildMockJSON

生成模拟数据

  • outputPath: string; 【(必填)输出本地路径。】
  • fileType?: dir | hump; 【生成的文件类型。dir表示多目录结构,hump表示驼峰命名结构】
  • filterPathPrefix?: string 【过滤路径前缀】

filterPathPrefix:filterPathPrefix 过滤路径前缀, 假设swagger的路径是 oms/api/order/get,我只需要 order/get,就可以这样写:

.buildMockJSON({filterPathPrefix: 'api'}}

生成代码如下:

// response.json
{
  "addTime": "string",
  "myList": [
    {
      "key": "string"
    }
  ],
}

buildApi

生成api文件。

  • outputPath: string; 【输出本地路径】
  • requestLibPath: string; 【自定义生成的api头部】
  • fileType?: js | ts; 【生成是js或ts类型的api文件。】
  • filterPathPrefix?: string 【过滤的api前缀】
  • outputFileType?: 'merge' | undefined
  • outputFileName?: string

requestLibPath 示例:

.buildApi({ requestLibPath: "import request from '@/api/request';" })

outputFileType:outputFileType 输出的文件类型,merge 表示多个文件合并在一起,每个接口都有自己独立的命名空间。

outputFileName:outputFileName 若是合并输出则需要申明输出的文件名,默认serve.ts

生成代码如下:

// serve.ts
import request from '@/api/request';  
export type Props = { 
  /** 备注:请求id  */ 
 requestId?: number; 
} 
export type Result = { 
  /** 备注:添加时间  */ 
 data: string[]; 
} 
export default (params: Props, options?: {[key: string]: any}) => {
  return request<Result>({
    url: '/api/getList',
    methods: 'GET',
    data: params,
    ...(options || {})
  })
} 

buildMockJS

生成mockjs的模拟文件。

  • distPath: string; 【输出本地路径】

生成代码如下:

//_mock.ts
import type { Request, Response } from 'express';
import Mock from 'mockjs'; 

export default { 
  "GET /api/getList": function getList(req: Request, res: Response, u: string){
    const data = {
      "addTime": Mock.Random.date('yyyy-MM-dd'),
      "addUserId|1-999": 1,
      "myList|1-10": [
        {
          "key|3-10": "1",
        }
      ],
    };
    return res.send({ code: 200, data, success: true });
  }, 
}
1.9.4

1 year ago

1.9.3

1 year ago

1.9.2

1 year ago

1.8.0

2 years ago

1.6.6

2 years ago

1.6.4

2 years ago

1.5.3

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.2.0

3 years ago

1.1.0-beta

3 years ago

1.0.0-beta

3 years ago

0.0.4-beta

3 years ago

0.0.5-beta

3 years ago

0.0.2-beta

3 years ago

0.0.3-beta

3 years ago

0.0.1-beta

3 years ago