swagger-tscode-generate v1.0.5
Generate typescript codes once user visit online swagger(2.x) docs.
Step1 Add settings in webpack or custom node server.
swagger-tscode-generate support swagger json url or swagger json file ;
// ts-code-gen.js
const settingParams = [
{
// swagger json data or url
// swagger:swaggerJson,
url:'https://petstore.swagger.io/v2/swagger.json',
codegen:{
// generated Folders
tsType:'src/codegen/types',
tsControler: 'src/codegen/service',
// Custom Request Tool
httpBase:'~/utils/fetch',
// rename file name more friendly
// Sample --> SampleController
getAPIFileName: function transformFileName(name){
return name.indexOf('API')? `${name.replace(/[ ]/g,'')}Controller`:name;
},
// is only Create types file
onlyCreateTypes:true,
}
}
]Step2 Visit Swagger Online Docs
- set setting url
https://petstore.swagger.io/v2/swagger.json - node ts-code-gen
3.2. View codes generated in folder src/codegen/service
my-app
├── config-override.js
├── node_modules
├── public
│ ├ index.html
│ └── favicon.ico
├── utils
│ └── fetch.ts
└── src
├── pages
├── components
└── codegen
└── service
├── commonType.ts
└── business
├── ts
│ └── SampleController.ts
└── types
└── IMenuBo.ts// src/codegen/service/business/ts/SampleController.ts
import { Response } from '../commonType';
import { IMenuBo } from '../types/IMenuBo';
import http from '~/utils/fetch';
/**
* Delete Sample
*/
export const deleteSample = function(
{
id: number,
},
params?: {
sample?: object;
},
config?: { [key: string]: any }
): Promise<Response<string>> {
return http(`/sample/${id}`, {
method: 'GET',
params,
...config,
});
};
/**
* Get User Menu Permissions
*/
export const getMenu = function(config?: { [key: string]: any }): Promise<Response<Array<IMenuBo>>> {
return http(`/menus`, {
method: 'GET',
...config,
});
};// src/codegen/service/business/types/IMenuBo.ts
export interface IMenuBo {
code?: string;
title?: string;
name?: string;
}Options
options is type of Array<Settings>.
SettingsParams attributes as below:
url:string, Swagger Online Json Docscodegen:CodeGenparams for code generation.prettyCmd:Optionalpretty code command executed after code generate finished.swaggerSavePath:Optionalfile path if you want to save original swagger difinitions content.
CodeGen attributes as below:
tsType:stringfolder for generated typescript type definitions.tsControler:stringfolder for generated typescript api codes.httpBase:stringPromise based HTTP client. for example:axios.responseWrapperPath:Optionalstring, custom response wrapper file pathresponseWrapperName:Optionalstring, exported name from custom response wrapper file pathtransformFileName:Optionalfunction, transform file name more friendly.onlyCreateTypes:Optionalboolean,