1.13.14 • Published 5 months ago

imi-openapi-tools v1.13.14

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

介绍

GitHub Repo stars npm (scoped) GitHub tag (latest SemVer pre-release)

根据 OpenApi3 文档生成 request 请求代码。

如果你使用 umi ,你可以使用@umijs/plugin-openapi 插件。

使用

npm i --save-dev imi-openapi-tools

在项目根目录新建 openapi.config.ts

const { generateService } = require('imi-openapi-tools');

generateService({
  schemaPath: 'http://petstore.swagger.io/v2/swagger.json',
  serversPath: './servers',
});

package.jsonscript 中添加 api: "openapi": "ts-node openapi.config.ts",

生成 api

npm run openapi
=======
```bash
npm i --save-dev imi-openapi-tools

在项目根目录新建 openapi2ts.config.ts 或者 .openapi2tsrc.ts

配置文件还支持 openapi2ts.config.ts, .openapi2tsrc.json 等格式,参考 cosmiconfig

export default {
  schemaPath: 'http://petstore.swagger.io/v2/swagger.json',
  serversPath: './servers',
}

如果单个项目有多个生成需求,支持传入数组配置

export default [
  {
    schemaPath: 'http://app.swagger.io/v2/swagger.json',
    serversPath: './servers/app',
  },
  {
    schemaPath: 'http://auth.swagger.io/v2/swagger.json',
    serversPath: './servers/auth',
  }
]

package.jsonscript 中添加 api: "openapi2ts": "openapi2ts",

生成api

npm run openapi2ts

参数

属性必填备注类型默认值
requestLibPath自定义请求方法路径string-
requestOptionsType自定义请求方法 options 参数类型string{key: string: any}
requestImportStatement自定义请求方法表达式string-
apiPrefixapi 的前缀string-
serversPath生成的文件夹的路径string-
schemaPathSwagger 2.0 或 OpenAPI 3.0 的地址string-
projectName项目名称string-
namespace命名空间名称stringAPI
mockFoldermock 目录string-
enumStyle枚举样式string-literal | enumstring-literal
nullable使用 null 代替可选booleanfalse
dataFieldsresponse 中数据字段string[]-

======= | 属性 | 必填 | 备注 | 类型 | 默认值 | | ---- | ---- | ---- | ---- | - | | requestLibPath | 否 | 自定义请求方法路径 | string | - | | requestOptionsType | 否 | 自定义请求方法 options 参数类型 | string | {key: string: any} | | requestImportStatement | 否 | 自定义请求方法表达式 | string | - | | apiPrefix | 否 | api 的前缀 | string | - | | serversPath | 否 | 生成的文件夹的路径 | string | - | | schemaPath | 否 | Swagger 2.0 或 OpenAPI 3.0 的地址 | string | - | | projectName | 否 | 项目名称 | string | - | | authorization | 否 | 文档登录凭证 | string | - | | namespace | 否 | 命名空间名称 | string | API | | mockFolder | 否 | mock目录 | string | - | | enumStyle | 否 | 枚举样式 | string-literal | enum | string-literal | | nullable | 否 | 使用null代替可选 | boolean | false | | dataFields | 否 | response中数据字段 | string[] | - | | isCamelCase | 否 | 小驼峰命名文件和请求函数 | boolean | true | | declareType | 否 | interface 声明类型(适配不同的规范) | type/interface | type | | mockConfig | 否 | mock配置 | Mock Config | - | | hook | 否 | 自定义 hook | Custom Hook | - |

Custom Hook

属性类型说明
afterOpenApiDataInited(openAPIData: OpenAPIObject) => OpenAPIObject-
customFunctionName(data: APIDataType) => string自定义请求方法函数名称
customTypeName(data: APIDataType) => string自定义类型名称
customClassName(tagName: string) => string自定义类名
customType(schemaObject: SchemaObject | undefined,namespace: string,originGetType:(schemaObject: SchemaObject | undefined, namespace: string) => string,) => string自定义获取类型 返回非字符串将使用默认方法获取 type
customFileNames(operationObject: OperationObject,apiPath: string,_apiMethod: string,) => string[]自定义生成文件名,可返回多个,表示生成多个文件. 返回为空,则使用默认的获取方法获取

Mock Config

属性类型说明
mswbooleanmsw类型mock文件格式. 直接返回对象举例:// @ts-ignoreexport default {'DELETE /mydata/delete': { message: { message: 'Mydata successfully deleted' } }};原文件:// @ts-ignoreimport { Request, Response } from 'express';export default {'DELETE /mydata/delete': (req: Request, res: Response) => {res.status(200).send({ message: { message: 'Mydata successfully deleted' } });},};