API生成器的魅力

346 阅读3分钟

你是否还在对着接口文档或者swagger一个个得复制接口到你的项目代码中,是否还得为该接口定义一个方法,方便导出外部使用,是否还得为该接口声明请求参数类型和响应实体类型,就比如像这样一个用户接口定义:

手写存在的问题

像这样定义完一通接口需要花费大量的时间,而且后续接口某个字段或者地址改了,我们还需要重新对着改一遍,不方便维护。那有没有一种工具可以自动生成这样的代码,当接口改了,我们还可以重新生成一次,达到一劳永逸的效果呢。答案是肯定的,这就是api生成器的作用,github地址,觉得还不错的话可以给个star支持一下哦!。

API生成器的使用

  1. 命令行输入node api.js
  2. 按提示输入后台swagger的json地址
  3. 输入要生成的接口的模块名称,比如:AbpApiDefinition
  4. 默认会在当前目录生成一个名为AbpApiDefinition(模块名称)的tsx文件

实现API生成器

使用的技术栈:

  • node.js
  • swagger-parser(npm插件)

swagger-parser主要是使用它来解析swgger的json地址,它可以返回swagger地址所有api的json描述信息,类似这样的json信息:

其中,paths字段包含了所有的接口信息,components包含了所有的请求和响应实体声明,这也是我们主要用到的两个字段属性。

API生成器的生成流程

  1. 遍历出paths中tags的值为输入的模块名称,并存入一个Map数据结构中,为后面的遍历生成做准备, 实现代码在init()方法

2.  循环modulesMap中的每一个值(模块),将值传入**writeFileApi()**方法中,生成每一个模块的api描述,并将生成的代码美化(beautify)之后,存入当前目录并以模块名称为文件名的tsx文件中。

在这个方法中会调用生成api描述方法(genApiAndRequestDto)和生成请求参数,响应结果实体方法(genDtoSchemas),这两个方法的详细实现请在github上查看哦,因为代码有点长,不过有很详细的注释的。

3. 代码中使用到了一个genQueryPath方法,该方法可以让拼接在接口路径上的查询字符串的值不为空(值为空的话,就不传这个参数),实现代码如下:

具体的实现细节,读者可以去github上看一下哦!拉取代码下来之后执行npm install, 然后执行npm start就可以启动项目了。

总结:

API生成器可以节省大量手写api的重复性工作,当接口有所更改,我们只需要重新执行一遍命令就可以同步最新了,后续也只需要维护这个工具就可以了。

读者可以根据自己公司后台返回来的swagger json信息修改这个工具来满足自己的需求哦!!

好了,暂时就讲这么多。后续有什么问题可以直接在评论区留言或者私信我哦~~。