在企业级的项目开发过程中,一般会采用前后端分离的开发方式,前后端通过api接口进行通信,所以接口文档就显得十分的重要。

目前大多数的公司都会引入Swagger来自动生成文档,大大提高了前后端分离开发的效率。

但是在前端开发过程中还是会出现一些问题,比如:

  • 由于需求的频繁变更,接口也会相应的改变
  • 多人协作时,每个人的代码风格不同,导致service文件非常混乱,不易于维护
  • 新人接手时,不清楚接口有没有定义,导致重复定义接口
  • 每次定义接口都是重复性工作,消耗鼠标键盘耐久

所以,如果能把这种重复性的工作交给机器做就好了,既能保证速度,也能保证质量,何乐而不为呢。

在github上找了一下这类工具,发现了umijs有一款插件叫openapi,可以实现生成service文件的功能。但是在使用过后发现这个工具存在不少问题,比如:对中文的支持不太好,如果Swagger文档中出现了中文会报错。而且它只支持最新的Swagger文档规范(OAS3),公司里用的还是旧的OAS2规范。

所以,我决定自己造一个轮子。

我把这个工具分成三个步骤:

  1. 从Swagger文档的url或者json中获取OAS2/OAS3数据
  2. 通过OAS2/OAS3数据生成一个通用的数据结构
  3. 通过js模板库把通用的数据结构转换成service文件

生成service步骤

我把这个工具命名为openapi-tool,通过名字就可以看出,我并不想它只能做生成service的工作,他应该是一个围绕着OpenApi的工具。所以,我加入了插件机制,并参考了Vue插件系统的设计,使得学习成本更低。通过插件系统,可以对接Mock平台,也可以做自动化接口测试等进一步提高开发效率的功能。

下面是使用openapi-tool的一个栗子:

生成的结果如下:

└── service
├── api.ts
├── login.ts
├── rule.t
└── typings.ts

可以看到,生成ts文件时会自动生成对应的类型文件,并自动引入依赖。如果想生成js文件,只需要把typescript设置为false即可。

下面是项目的github地址,欢迎提issue,如果你喜欢这个项目的话,请给我个star吧。

openapi-tool

通过Swagger文档生成前端service文件,提升前端开发效率的更多相关文章

  1. asp.net core web api 生成 swagger 文档

    asp.net core web api 生成 swagger 文档 Intro 在前后端分离的开发模式下,文档就显得比较重要,哪个接口要传哪些参数,如果一两个接口还好,口头上直接沟通好就可以了,如果 ...

  2. 使用 Swagger 文档化和定义 RESTful API

    大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Descript ...

  3. 求你别再用swagger了,给你推荐几个在线文档生成神器

    前言 最近公司打算做一个openapi开放平台,让我找一款好用的在线文档生成工具,具体要求如下: 必须是开源的 能够实时生成在线文档 支持全文搜索 支持在线调试功能 界面优美 说实话,这个需求看起来简 ...

  4. springboot成神之——swagger文档自动生成工具

    本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...

  5. asp.net core 2.1 生成swagger文档

    新建asp.netcore2.1 api项目 “WebApplication1” 在nuget管理器中添加对Swashbuckle.AspNetCore 3.0.0.Microsoft.AspNetC ...

  6. C#生成PDF文档,读取TXT文件内容

    using System.IO;using iTextSharp.text;using iTextSharp.text.pdf; //需要在项目里引用ICSharpCode.SharpZipLib.d ...

  7. 利用typescript生成Swagger文档

    项目地址:https://github.com/wz2cool/swagger-ts-doc demo代码地址:https://github.com/wz2cool/swagger-ts-doc-de ...

  8. Gin 如何动态生成模型 swagger 文档

    在做 API 接口开发时, 一般会统一 API 返回格式, 例如 { "code": 200, "data": { //xxxxx //xxxxx }, &qu ...

  9. Springboot 系列(十六)你真的了解 Swagger 文档吗?

    前言 目前来说,在 Java 领域使用 Springboot 构建微服务是比较流行的,在构建微服务时,我们大多数会选择暴漏一个 REST API 以供调用.又或者公司采用前后端分离的开发模式,让前端和 ...

随机推荐

  1. hdfs数据迁移

    有时候可能会进行hadoop集群数据拷贝的情况,可用以下命令进行拷贝 需要在目标集群上来进行操作 hadoop distcp hdfs://192.168.1.233:8020/user/hive/w ...

  2. Android Studio 百度地图导航

    配置就不再多说了,上一篇已经详细说过了,这次就是根据经纬度坐标做地图导航,路径规划.直接上代码: package com.example.appview.mian_page.Frament.Anzhu ...

  3. ES6扩展——正则扩展(u、y修饰符)

    //下面三行代码效果一样 //全局匹配开头为a的 const regexp1 = /^a/g; const regexp2 = new RegExp('a','g'); const regexp3 = ...

  4. python 逆序按行读取文件

    How to read a file in reverse order? import os def readlines_reverse(filename): with open(filename) ...

  5. 关闭Redis服务

    方式1: 方式2:

  6. NOIP模拟38:a

      这是T1.   考场上思路与正解就差个前缀,打的线段树,因为其巨大常数快乐挂掉......   正解复杂度是\(O(n^2m)\),其实再挂个\(log\)也能过,但是需要用常数极其优秀的树状数组 ...

  7. Linux串口调试详解

    测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 目标机添加串口设备 一般嵌入式主板的默认镜像可能只配置了调试串口,并用于 consol ...

  8. Python常见问题 - python3 使用requests发送HTTPS请求报certificate verify failed 错误

    当你使用 requests 发送HTTPS请求时 requests.get(url, parmas=parmas, headers=header, cookies=cookie) 出现了以下错误 HT ...

  9. aes加解密前后端-后台

    一.web.xml: <filter> <filter-name>fastLoginFilter</filter-name> <filter-class> ...

  10. python基础--网站推荐

    Python教程 - 廖雪峰的官方网站 Python 基础教程 | 菜鸟教程 随笔分类 - 机器学习