0.1.27 • Published 8 months ago

baikaifa-openapi-tool v0.1.27

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

openapi-tool

English | 简体中文

openapi-tool is a tool to generate service file based on openapi.

If you like it, please give me a star. Thanks a lot!

Features

  • Compatible with bath OAS2 and OAS3
  • Support major HTTP Client(axios and umi-request so far)
  • Support generating js or ts file
  • Support type system when generate ts file
  • Plugin system to add global-level functionality

Install

yarn add baikaifa-openapi-tool

Example

note: CommonJS usage

In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with require() use the following approach:

const OpenApiTool = require('openapi-tool').default;

PS: Typing .default is merely used to gain the TypeScript typings. Please remove .default when you launch the project, otherwise it will throw an error.

Usage

const OpenApiTool = require('baikaifa-openapi-tool')
const { resolve } = require('path')

const url = 'https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json'

const outputDir = resolve(__dirname, 'service')

const openApiTool = new OpenApiTool({ url })
openApiTool.generateService({
  template: 'axios',
  importText: `import axios from '@/utils/request';`,
  typescript: true,
  outputDir,
   format: (openapi) => {
  
    return openapi;
  },
})

API

new OpenApiTool(options: Options)

Create a new OpenApiTool instance.

Options:

PropertyDescriptionTypeDefaultrequired
urlThe url of swagger documentstring-either url or data
dataThe json of swagger documentstring-either url or data

generateService(options: ServiceGeneratorOptions): void

Generate service files, the name of file will be the tag's name.

ServiceGeneratorOptions:

PropertyDescriptionTypeDefaultrequired
outputDirOutput directorystring-true
templateHTTP client template which you want to generatestring'umi-request'false
importTextImport statementsstringdefault statementsfalse
typescriptGenerate ts file and typingsbooleanfalsefalse
formatFormat content of OpenApi(openapi: OpenApi) => OpenApi-false

getOpenApi(): Promise<OpenApi>

Get OpenApi that transformed from OAS2/OAS3.

Plugin

openapi-tool have a flexible plugin system which can add global-level functionality.

Using Plugin

Use plugins by calling the OpenApiTool.use() global method. This has to be done before you start your app by calling new OpenApiTool():

// calls `MyPlugin.install(OpenApiTool)`
OpenApiTool.use(MyPlugin)

new OpenApiTool({
  //... options
})

You can optionally pass in some options:

OpenApiTool.use(MyPlugin, { someOption: true })

Writing a plugin

A plugin should be a method. The method will be called with the OpenApiTool constructor as the first argument, along with possible options:

const logPlugin = (OpenApiTool, option) => {
  OpenApiTool.prototype.log = async function() {
    const openapi = await this.getOpenApi();
    console.log(`the length of apis: ${openapi.apis.length}`);
    console.log('option', option);
  }
}

then you can use it like this:

const openApiTool = new OpenApiTool({
  //... options
});
openApiTool.log();

License

MIT

0.1.27

8 months ago

0.1.26

8 months ago

0.1.24

9 months ago

0.1.22

10 months ago

0.1.23

10 months ago

0.1.20

10 months ago

0.1.21

10 months ago

0.1.13

10 months ago

0.1.14

10 months ago

0.1.15

10 months ago

0.1.16

10 months ago

0.1.17

10 months ago

0.1.18

10 months ago

0.1.19

10 months ago

0.1.11

10 months ago

0.1.10

1 year ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago