栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

根据swagger json 自动生成 service &&types 文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据swagger json 自动生成 service &&types 文件

Generate typescript codes once user visit online swagger(2.x) docs.

最近新写了一个工具,根据swagger 自动生成service 和types 文件,提高coding 效率
(可以自定义配置只生成 types 文件)

Step1 yarn add swagger-tscode-generate Step2 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,
    }
  }

 ]

Step3 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';


export const deleteSample = function(
  {
      id: number,
  },
  params?: {
    sample?: object;
  },
  config?: { [key: string]: any }
): Promise> {
  return http(`/sample/${id}`, {
    method: 'GET',
    params,
    ...config,
  });
};


export const getMenu = function(config?: { [key: string]: any }): Promise>> {
  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.

SettingsParams attributes as below:

  • url: string, Swagger online Json Docs

  • codegen: CodeGen params for code generation.

  • prettyCmd: Optional pretty code command executed after code generate finished.

  • swaggerSavePath: Optional file path if you want to save original swagger difinitions content.

CodeGen attributes as below:

  • tsType: string folder for generated typescript type definitions.

  • tsControler: string folder for generated typescript api codes.

  • httpbase: string Promise based HTTP client. for example: axios.

  • responseWrapperPath: Optional string, custom response wrapper file path

  • responseWrapperName: Optional string, exported name from custom response wrapper file path

  • transformFileName: Optional function, transform file name more friendly.

  • onlyCreateTypes: Optional boolean ,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号