2.0.1 • Published 1 month ago
@liangskyli/openapi-gen-ts v2.0.1
openapi to typescript 代码生成工具
通过openapi提供ts类型和接口请求代码自动生成,避免重复性工作,提高开发效率。
- 基于openapi v3 生成 ts数据类型和请求库接口代码。
- ts接口类型文件生成
- 通用请求库接口调用文件生成
- 如果需要支持swagger2格式
- 可以设置isSwagger2为true,并配置swaggerPath。
- swagger2格式的支持情况依赖swagger2openapi转换openapi V3文件的支持情况
- 建议非必要不要使用swagger2格式,使用openapi v3格式提供更全面的功能逻辑。
安装:
yarn add @liangskyli/openapi-gen-ts --dev
如果项目没有安装prettier,需要安装prettier(^2.0.0 || ^3.0.0)
yarn add prettier --dev
生成方式:
1、CLI 命令方式(推荐)
- 默认配置文件在运行目录下request.config.ts文件
yarn openapi-gen-ts
- 配置文件别名request.config2.ts
yarn openapi-gen-ts -c ./request.config2.ts
命令参数
参数 | 说明 | 默认值 |
---|---|---|
-c, --configFile | ts数据生成配置文件 配置参数见下面 | ./request.config.ts |
命令参数 configFile ts数据生成配置文件参数属性
- 类型:IGenTsDataOpts | IGenTsDataOpts[]
IGenTsDataOpts 参数属性
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
isSwagger2 | 是否使用Swagger2生成 | boolean \| undefined | undefined |
swaggerPath | isSwagger2为true时,Swagger2 YAML or JSON 格式的文件路径,需要自己根据业务逻辑生成 | string \| URL | |
openapiPath | isSwagger2不为true时,openapi v3 YAML or JSON 格式的文件路径,需要自己根据业务逻辑生成 | string \| URL \| OpenAPI3 | |
genTsDir | 生成ts文件夹所在目录 | string | ./ |
prettierOptions | 生成文件格式化,默认取项目配置,该配置优先级更高,会合并覆盖项目prettier配置文件,如项目有prettier配置文件,这里无需配置, | 详情配置见 prettier文档 | |
requestFile | ajax请求库配置,默认使用axios,自定义二次封装或使用其他请求库时可配置, | 类型见下面 requestFile属性 | undefined |
requestQueryOmit | ajax请求库里对公共get参数做了传入处理时,请求接口忽略get参数ts类型声明 | string[] | undefined |
requestBodyOmit | ajax请求库里对公共post参数做了传入处理时,请求接口忽略post参数ts类型声明 | string[] | undefined |
openAPITSOptions | openapi 生成 typescript类型配置 | Omit<OpenAPITSOptions, 'commentHeader'> 详情配置见 openapi-typescript文档 | undefined |
typescriptJsonSchemaOptions | typescript-json-schema 生成 schema类型配置 | 详情配置见 typescript-json-schema文档 | undefined |
requestFile属性
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
path | ajax请求库路径,默认使用axios,文件默认导出函数,使用详见下面说明 string | undefined | |
requestParamsType | ajax请求库文件里导出的请求库方法入参类型定义名称(非默认导出),使用详见下面说明 string | undefined |
requestFile.path 说明
- 不设置,默认使用axios,可以自己封装后引入路径使用。
- ajax请求库路径不做处理,按生成的文件的相对路径或使用绝对路径。
- 路径下的文件要求默认导出方法,为IAPIRequest类型。
type IAPIRequest = (param: { url?: string; method?: OpenapiMethod | Uppercase<OpenapiMethod> | string; params?: any; path?: any; data?: any; [k: string]: any; }) => Promise<any>;
自定义ajax接口例子:
import axios from 'axios'; import type { IAPIRequest } from '@liangskyli/openapi-gen-ts'; const request: IAPIRequest = (config) => { // 这里可以封装公共逻辑 return axios(config).then((res) => res.data); }; export default request; // 请求库方法入参类型定义名称(非默认导出),requestParamsType设置导出名 export { AxiosRequestConfig };
生成的schema-api/request-api.ts文件,可直接用于项目请求接口,无需手动编写代码。
configFile ts数据生成配置文件示例
- 配置文件支持使用defineConfig定义ts类型
import { defineConfig } from '@liangskyli/openapi-gen-ts';
export default defineConfig({
genTsDir: './',
openapiPath: './openapi/openapiv3-example.json',
});
- openapi v3 YAML or JSON 格式的文件示例,openapi 需要自己根据业务逻辑生成。
- openapi v3 method 支持说明
- 支持任意openapi接口类型(如:"get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace")
- 支持相同url,对应多个method请求
- 支持responses 200或default的第一个响应数据(优先200)
- 支持任意媒体类型(MediaType)的响应数据
- 支持任意媒体类型(MediaType)的Query请求数据
- 支持任意媒体类型(MediaType)的Body请求数据,多个媒体类型合并处理
- 生成ts文件结构指引 文档
- 接口API使用指引 文档
2、方法调用方式
genTsData函数参数
- 和命令参数configFile属性一致,见上面说明(命令参数 configFile ts数据生成配置文件参数属性)。
- 使用例子
import genTsData from '@liangskyli/openapi-gen-ts';
genTsData({
genTsDir: './',
openapiPath: './openapi/openapiv3-example.json',
}).then();
2.0.1
1 month ago
2.0.0
2 months ago
2.0.0-beta.1
5 months ago
2.0.0-beta.0
5 months ago
1.2.0
10 months ago
1.2.2
7 months ago
1.3.0
5 months ago
1.2.1
9 months ago
1.2.0-beta.0
10 months ago
1.1.0
11 months ago
1.0.1
12 months ago
1.0.0
1 year ago
1.0.0-beta.2
1 year ago
1.0.0-beta.1
1 year ago
1.0.0-beta.0
1 year ago
0.7.0
1 year ago
0.6.0
1 year ago
0.3.0
2 years ago
0.5.0
2 years ago
0.4.0
2 years ago
0.2.2
2 years ago
0.2.1
2 years ago
0.2.0
2 years ago
0.2.0-beta.3
2 years ago
0.2.0-beta.2
2 years ago
0.2.0-beta.1
2 years ago
0.2.0-beta.0
2 years ago
0.1.0
2 years ago