Skip to content

Repository files navigation

OpenAPI to TypeScript Generator (OpenAPI TypeScript 生成器)

GitHub Repo starsnpm (scoped)GitHub tag (latest SemVer pre-release)

English | 中文

English

Introduction

A powerful tool that generates TypeScript request code from OpenAPI 3.0 documentation. If you're using umi, you might want to check out @umijs/plugin-openapi plugin instead.

Installation

npm i --save-dev @umijs/openapi
# or
pnpm add -D @umijs/openapi
# or
yarn add -D @umijs/openapi

Usage

  1. Create a configuration file in your project root directory. You can name it either openapi2ts.config.ts or .openapi2tsrc.ts:
exportdefault{schemaPath: 'http://petstore.swagger.io/v2/swagger.json',serversPath: './servers',}

For multiple API sources, you can use an array configuration:

exportdefault[{schemaPath: 'http://app.swagger.io/v2/swagger.json',serversPath: './servers/app',},{schemaPath: 'http://auth.swagger.io/v2/swagger.json',serversPath: './servers/auth',}]
  1. Add the generation script to your package.json:
{
"scripts": {
"openapi2ts": "openapi2ts"
}
}
  1. Generate the API code:
npm run openapi2ts

Configuration Options

PropertyRequiredDescriptionTypeDefault
requestLibPathNoCustom request method pathstring-
requestOptionsTypeNoCustom request options typestring{[key: string]: any}
requestImportStatementNoCustom request import statementstring-
apiPrefixNoAPI prefixstring-
serversPathNoOutput directory pathstring-
schemaPathNoSwagger 2.0 or OpenAPI 3.0 URLstring-
projectNameNoProject namestring-
authorizationNoDocumentation authentication tokenstring-
namespaceNoNamespace namestringAPI
mockFolderNoMock directorystring-
enumStyleNoEnum stylestring-literal | enumstring-literal
nullableNoUse null instead of optionalbooleanfalse
dataFieldsNoData fields in responsestring[]-
isCamelCaseNoUse camelCase for files and functionsbooleantrue
declareTypeNoInterface declaration typetype/interfacetype

Custom Hooks

PropertyTypeDescription
afterOpenApiDataInited(openAPIData: OpenAPIObject) => OpenAPIObjectHook after OpenAPI data initialization
customFunctionName(data: APIDataType) => stringCustom request function name
customTypeName(data: APIDataType) => stringCustom type name
customClassName(tagName: string) => stringCustom class name
customType(schemaObject, namespace, originGetType) => stringCustom type getter
customFileNames(operationObject, apiPath, _apiMethod) => string[]Custom file name generator

中文

介绍

一个强大的工具,可以根据 OpenAPI 3.0 文档生成 TypeScript 请求代码。如果你使用 umi,可以考虑使用 @umijs/plugin-openapi 插件。

安装

npm i --save-dev @umijs/openapi
# 或者
pnpm add -D @umijs/openapi
# 或者
yarn add -D @umijs/openapi

使用方法

  1. 在项目根目录创建配置文件,可以命名为 openapi2ts.config.ts.openapi2tsrc.ts
exportdefault{schemaPath: 'http://petstore.swagger.io/v2/swagger.json',serversPath: './servers',}

如果需要处理多个 API 源,可以使用数组配置:

exportdefault[{schemaPath: 'http://app.swagger.io/v2/swagger.json',serversPath: './servers/app',},{schemaPath: 'http://auth.swagger.io/v2/swagger.json',serversPath: './servers/auth',}]
  1. package.json 中添加生成脚本:
{
"scripts": {
"openapi2ts": "openapi2ts"
}
}
  1. 生成 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-
authorization文档登录凭证string-
namespace命名空间名称stringAPI
mockFoldermock 目录string-
enumStyle枚举样式string-literal | enumstring-literal
nullable使用 null 代替可选booleanfalse
dataFieldsresponse 中数据字段string[]-
isCamelCase小驼峰命名文件和请求函数booleantrue
declareTypeinterface 声明类型type/interfacetype

自定义钩子

属性类型说明
afterOpenApiDataInited(openAPIData: OpenAPIObject) => OpenAPIObjectOpenAPI 数据初始化后的钩子
customFunctionName(data: APIDataType) => string自定义请求方法函数名称
customTypeName(data: APIDataType) => string自定义类型名称
customClassName(tagName: string) => string自定义类名
customType(schemaObject, namespace, originGetType) => string自定义获取类型
customFileNames(operationObject, apiPath, _apiMethod) => string[]自定义生成文件名

About

一个被大范围使用的小工具

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages