最近写一个通过node转yapi为ts文件得小工具,分享下心得
分析下yapi得接口大致架构
获取cookie:
看了下大概是通过api/user/login接口Set-cookie
这里使用了httponly做了一层cookies数据得保护
获取接口内容:
分析了我们所需要得信息以及接口内容主要结构,大致分为基本信息(获取接口得path),请求参数(params得类型)以及返回得数据结构。
总结成以下步骤图
接下来逐步分析下具体用到的技术:
http模块处理cookie和接口内容:
这里很简单,直接复制node得http模块得例子,获取到对应得头部得cookies
通过setHeader得方式设置Cookie
得到接口data值,进行数据处理
获取到需要得req_body_other, res_body
分析数据格式大概就是从这一串字符串中提取出自己所需要得内容,可以看出来是在properties属性里面,直接parse序列化即可。
接下来就是转成ts文件
目标导向,先生成一个最终需要得到得ts文件,红色框框得就是内容得示例
这个其实就是我们要生成得目标格式,是不是就完成了,刺激把。
然后我们把里面得内容替换以下,思路是把export interface当一个模板,不断往里面赛变量
不过要注意得是这里得难点
里面得属性可能会有扩展, 这里先做响应接口第一层得简单处理:
这里就将属性不断塞进这个字符串里面,最后生成
第一层得数据响应得interface,后面第二层,第三层。。,通过递归方式处理即可。
处理后得结果,跟结果还有点差距,一个是string数组方面,还有一个是必填和非必填,关于image就是逻辑问题,后面得处理就不详细说明了,大概得思路如上,后面会介绍下用babel得方式处理,会比现在方法更灵活。