2.0.2 • Published 3 years ago

swagger-ts-plugin v2.0.2

Weekly downloads
23
License
MIT
Repository
-
Last release
3 years ago
  npm i --save-dev @tms/swagger-ts-plugin
  yarn add --dev @tms/swagger-ts-plugin

介绍(请求层解决方案)

    1. 给每个服务生成出入参的interface定义和注释,对应 interface.d.ts 文件
    2. 给每个服务生成可直接调用的函数,对应 function.ts 文件
    3. 给出一个根api, request.ts 文件
    4. 具体配置使用如下

参数

NameTypeDefaultDescription
*serverList{Array<{serviceName: string;serviceUrl:string;},string>}[]当前字段必传如果穿数组字符串'sms-service' 后端服务名,如果是字符串对象,必传服务名称和服务地址
outputPath{String}根目录/swagger生成 ts 文件输入的文件夹位置
appUrl{String}"http://eureka.dev.com:1111/eureka/apps"后端所有服务注册信息

配置

webpack.config.js

const Swapper2TsPlugin = require("@tms/swagger-ts-plugin");
/**
 * outputPath 输出地址
 * appUrl 必须是贵公司的eureka所有服务列表地址 http://eureka.dev.com:1111/eureka/apps 当前地址返回的是xml格式数据,插件会处理
 */
// 第一种使用方式
module.exports = {
    plugins: [
        new Swapper2TsPlugin({
            serverList: [
                "trialpartner-web",
                "sms-service",
                {
                    serviceName: "xxx-service",
                    serviceUrl: "http://172.20.37.153:8000/",
                },
            ],
            // 测试环境使用http://eureka.test.com:1111/eureka/apps
            appUrl: "http://eureka.dev.com:1111/eureka/apps",
        }),
    ],
};

// 第二种使用方式
// 因为插件也直接暴露出build方法,开发者可以直接调用
// npm scripts 增加一条命名,"build:ts":"node xxx.js";

// 创建一个xxx.js;
new Swapper2TsPlugin({
    /* 配置 */
}).build();

// cmd bash powershell等终端中 运行yarn build:ts或者 npm run build:ts;

输出

├── swagger2ts
	├── [serviceName1]
        ├── interface.d.ts
        └── paths.ts
	├── [serviceName2]
        ├── interface.d.ts
        └── paths.ts
    ├── ...
    ├── request.ts
	└── translation.json

使用

视频链接

// test.ts 这里的地址根据生成的swagger2ts文件
import request from "xxx/swagger2ts/request.ts";
import axios from "axios";

let http = tmsRequest.create({
    timeout: 500000,
    baseURL: "/api/",
});

const API = request(http);
// 走网关 请求
API["服务名称"]["后端接口地址"]("参数").then((val) => {});

// 例
const msg = API.smsService["/homeMenu/getHomeMenuList"]({
    body: {
        projectId: "xxx",
        siteId: "xxx",
        subjectInfoId: "xxx",
    },
}).then((val) => {});

请求参数

params.body

如果入参需要 body 参数,对应的 post 请求 body

params.path

如果入参需要 path 参数,对应后端动态路由,例如/api/getFileId/{fileId};

params.query

如果入参需要 query 参数,对应 url 后面拼接的参数

params.formData

上传文件,这里暂时没处理好

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0-alpah.0

3 years ago

1.1.23

3 years ago

1.1.22

3 years ago

1.1.21

3 years ago

1.1.24

3 years ago

1.1.19

3 years ago

1.1.20

3 years ago

1.1.18

3 years ago

1.1.17

3 years ago

1.1.16

3 years ago

1.1.15

3 years ago

1.1.14

3 years ago

1.1.13

3 years ago

1.1.12

3 years ago

1.1.11

3 years ago

1.1.9

3 years ago

1.1.10

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago