vue3+ts实战开发之swagger自动生成工具开发(二)

在上一篇文章我们讲述了如何去管理我们实际项目中关于请求部分的接口定义和封装,更推荐的是统一化、自动化。在本文中将重点阐述前端是如何集成这类的开发工具。如果你还没预览上一篇文章,请回到上一篇点击传送

一、原理介绍

其核心原理很简单,就是把swagger.json的数据格式转化成我们需要的请求文件。所以我们只需要发送一个请求,通过nodejs的fs模块进行写入即可。
swagger.json:
swagger数据结构截图

二、进阶-设计成CMD命令交互式
1.推荐技术栈掌握

这里我们需要掌握几个插件库的技术栈,这也与我们通常项目脚手架生成的文件的原理一致。即:
commander:通常用来定义命令的接收参数,比如 xx --version;
download-git-repo:拉取指定项目的git地址到本地;
inquirer:通常用来做一些shell的交互;
ora:通常CMD loading;
child_process:输出shell命令

2.结果设计

我们在设计内容一定是用户思维,先定义使用方式,再倒推逻辑实现:

# 全局安装swagger-ts插件
npm i yh-swagger-ts -g
# 添加swagger api 服务
yh-swagger -a 
# 更新swagger api 服务
yh-swagger -u
# 查询swagger api版本
yh-swagger -v

第一次添加时需要声明地址、文档地址、api服务名称
在这里插入图片描述
后续在该目录即可通过交互式命令进行选择即可
在这里插入图片描述
无论是第一次添加,还是后续更新,都会自动推到我们内部的npm镜像仓库,展示:
在这里插入图片描述

3. 过程开发
本地 git template基础模板 npm 执行shell脚本yh-swagger -a or yh-swagger -u 使用`download-git-repo`拉去基础代码 1.递归swagger.json的数据结构 生成需要的ts文件和声明文件 写入本地的`git template基础模板` 2.如果是更新的命令即更新package.json的版本 通过child_process执行shell,`cd ${apiName} && npm publish`进行发布 本地 git template基础模板 npm

到这里前面的基本原理大家也都懂了吧,接下来说明一下 git template基础模板都有哪些内容
在这里插入图片描述
其实主要就是一个核心的main.ts,还一个就是readme.md文件.

readme.md文件一般是对项目进行说明的作用,这里定义了一些特殊的字符,比如@yh-swagger/xxx是用来replace替换字符说明的,还有swagger文档链接也会在这里面进行替换。

main.ts主要就是用来接收axios实例,暴漏模版中apitype类型的作用。因为生成的ts请求文件中不能各自引入axios请求方法,否则的话,一些请求拦截,统一的请求处理就会有问题。因此,设计上我们希望axios是可以由项目端传输过来的。

传输
传输
传输
axios项目端
user-api
test-api
template-api

这样的话,不管我每个服务是不是在一起,我也能全局共享一个axios实例了。

// filePath: user-api/main.ts
import * as types from './swagger-utils/index'
import * as Api from './swagger-api/index'
interface PostData {
  url: string;
  data?: any;
}


interface Request {
	$get<T>(PostData:PostData):(Promise<T>) 
	$post<T>(PostData:PostData):(Promise<T>) 
	$delete<T>(PostData:PostData):(Promise<T>) 
	$put<T>(PostData:PostData):(Promise<T>) 
}

let request:Request;
export function setRequest(requestInstant: any){
	request = requestInstant;
}


export function HttpRequest(){
	return {
		$get: request.$get,
		$post: request.$post,
		$delete: request.$delete,
		$put: request.$put,
	}
}

export type SwaggerResponse<R> = R

export {
  types,
	Api
}

开源git:swagger-ts-api

希望大家点个star,谢谢。。。

加首页微信,进vue社区微信群~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

槿畔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值