通过Swagger文档生成前端service文件,提升前端开发效率
在企业级的项目开发过程中,一般会采用前后端分离的开发方式,前后端通过api接口进行通信,所以接口文档就显得十分的重要。
目前大多数的公司都会引入Swagger来自动生成文档,大大提高了前后端分离开发的效率。
但是在前端开发过程中还是会出现一些问题,比如:
- 由于需求的频繁变更,接口也会相应的改变
- 多人协作时,每个人的代码风格不同,导致service文件非常混乱,不易于维护
- 新人接手时,不清楚接口有没有定义,导致重复定义接口
- 每次定义接口都是重复性工作,消耗鼠标键盘耐久
所以,如果能把这种重复性的工作交给机器做就好了,既能保证速度,也能保证质量,何乐而不为呢。
在github上找了一下这类工具,发现了umijs有一款插件叫openapi,可以实现生成service文件的功能。但是在使用过后发现这个工具存在不少问题,比如:对中文的支持不太好,如果Swagger文档中出现了中文会报错。而且它只支持最新的Swagger文档规范(OAS3),公司里用的还是旧的OAS2规范。
所以,我决定自己造一个轮子。
我把这个工具分成三个步骤:
- 从Swagger文档的url或者json中获取OAS2/OAS3数据
- 通过OAS2/OAS3数据生成一个通用的数据结构
- 通过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吧。
通过Swagger文档生成前端service文件,提升前端开发效率的更多相关文章
- asp.net core web api 生成 swagger 文档
asp.net core web api 生成 swagger 文档 Intro 在前后端分离的开发模式下,文档就显得比较重要,哪个接口要传哪些参数,如果一两个接口还好,口头上直接沟通好就可以了,如果 ...
- 使用 Swagger 文档化和定义 RESTful API
大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Descript ...
- 求你别再用swagger了,给你推荐几个在线文档生成神器
前言 最近公司打算做一个openapi开放平台,让我找一款好用的在线文档生成工具,具体要求如下: 必须是开源的 能够实时生成在线文档 支持全文搜索 支持在线调试功能 界面优美 说实话,这个需求看起来简 ...
- springboot成神之——swagger文档自动生成工具
本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...
- asp.net core 2.1 生成swagger文档
新建asp.netcore2.1 api项目 “WebApplication1” 在nuget管理器中添加对Swashbuckle.AspNetCore 3.0.0.Microsoft.AspNetC ...
- C#生成PDF文档,读取TXT文件内容
using System.IO;using iTextSharp.text;using iTextSharp.text.pdf; //需要在项目里引用ICSharpCode.SharpZipLib.d ...
- 利用typescript生成Swagger文档
项目地址:https://github.com/wz2cool/swagger-ts-doc demo代码地址:https://github.com/wz2cool/swagger-ts-doc-de ...
- Gin 如何动态生成模型 swagger 文档
在做 API 接口开发时, 一般会统一 API 返回格式, 例如 { "code": 200, "data": { //xxxxx //xxxxx }, &qu ...
- Springboot 系列(十六)你真的了解 Swagger 文档吗?
前言 目前来说,在 Java 领域使用 Springboot 构建微服务是比较流行的,在构建微服务时,我们大多数会选择暴漏一个 REST API 以供调用.又或者公司采用前后端分离的开发模式,让前端和 ...
随机推荐
- go语言初始化结构体指针
go语言初始化结构体指针 head:=&ListNode{} 或者 head:=new(ListNode)
- WSL(Ubuntu)下安装Redis
一.安装 输入命令安装redis-server sudo apt-get install redis-server 安装完成后打开redis.conf文件,找到bind 127.0.0.1,更改为bi ...
- 老司机带你体验SYS库多种新玩法
导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...
- centos7环境变量配置错误以至于命令不可使用
2021-07-16 问题: centos7在配置环境变量的时候少打了$,导致很多命令不能使用 解决方法: 在命令行输入: export PATH=/usr/local/sbin:/usr/local ...
- Qt5之正则表达式
字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...
- Mybatis-Plus增强包
简介 本框架(Gitee地址 )结合公司日常业务场景,对Mybatis-Plus 做了进一步的拓展封装,即保留MP原功能,又添加更多有用便捷的功能.具体拓展体现在数据自动填充(类似JPA中的审计).关 ...
- springboot通过AOP和自定义注解实现权限校验
自定义注解 PermissionCheck: package com.mgdd.sys.annotation; import java.lang.annotation.*; /** * @author ...
- 离线安装Windows Terminal
Windows Terminal颜值高.适配好.速度快,是Windows 10下命令行工具的不二选择. 最近在公司电脑上安装Windows Terminal时遇到一个问题,由于公司电脑不能直接连接外网 ...
- Appium问题解决方案(9)- Original error: Failed to launch Appium Settings app: Condition unmet after 5090 ms
背景 执行代码报错 解决方法 该问题并不常见,主要是手机操作系统的问题 程序无法无法自动打开appiumsettings,那么我们可以手动打开appiumsettings服务(程序没有界面,会出现打开 ...
- FTP协议简介
1. FTP协议概述 FTP协议的英文全称为File Transfer Protocol, 简称为FTP, 它是从一个主机向一个主机传输文件的协议. FTP协议中客户端和服务器进行文件交互的方式如下图 ...