@umijs/openapi

GitHub Repo stars [npm (scoped)](https://www.npmjs.com/package/@um

@umijs/openapi downloads @umijs/openapi version @umijs/openapi license

@umijs/openapiSimilar Packages:
Npm Package Weekly Downloads Trend
3 Years
🌟 Show real-time usage chart on @umijs/openapi's README.md, just copy the code below.
## Usage Trend
[![Usage Trend of @umijs/openapi](https://npm-compare.com/img/npm-trend/THREE_YEARS/@umijs/openapi.png)](https://npm-compare.com/@umijs/openapi#timeRange=THREE_YEARS)
Cumulative GitHub Star Trend
🌟 Show GitHub stars trend chart on @umijs/openapi's README.md, just copy the code below.
## GitHub Stars Trend
[![GitHub Stars Trend of @umijs/openapi](https://npm-compare.com/img/github-trend/@umijs/openapi.png)](https://npm-compare.com/@umijs/openapi)
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
@umijs/openapi23,0581123 kB03 months agoMIT
README for @umijs/openapi

OpenAPI to TypeScript Generator (OpenAPI TypeScript 生成器)

GitHub Repo stars npm (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:
export default {
  schemaPath: 'http://petstore.swagger.io/v2/swagger.json',
  serversPath: './servers',
}

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

export default [
  {
    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
splitDeclareNoGenerate a separate .d.ts file for each tag group.boolean-

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
export default {
  schemaPath: 'http://petstore.swagger.io/v2/swagger.json',
  serversPath: './servers',
}

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

export default [
  {
    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
splitDeclare每个tag组一个独立的.d.ts.boolean-

自定义钩子

属性类型说明
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[]自定义生成文件名