通过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 以供调用.又或者公司采用前后端分离的开发模式,让前端和 ...
随机推荐
- 使用栅格系统开发响应式页面——logo+nav实例
小屏时: 中屏及以上时: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- leetcode——217. 存在重复元素
leetcode--217. 存在重复元素 题目描述:给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false ...
- Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系
Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...
- Java特性和优势
Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性
- 问题:idea 中文无法使用
1. 问题--idea无法使用中文输入 原因:idea本身版本过高,所以需要你强制减低它的jdk版本 解决:使用配置idea环境变量解决 ps:目前适用于任何版本的jdk和idea 步骤: 1.新建 ...
- Python3实现打格点算法的GPU加速
技术背景 在数学和物理学领域,总是充满了各种连续的函数模型.而当我们用现代计算机的技术去处理这些问题的时候,事实上是无法直接处理连续模型的,绝大多数的情况下都要转化成一个离散的模型再进行数值的计算.比 ...
- 第九章 Net 5.0 快速开发框架 YC.Boilerplate --定时服务 Quartz.net
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...
- KMP算法的改进
KMP算法的改进 KMP算法已经在极大程度上提高了子符串的匹配效率,但是仍然有改进的余地. 1. 引入的情景 下面我们就其中的一种情况进行分析: 主串T为"aaaabcde-" 子 ...
- Abp Vnext3 vue-admin-template(三获取用户信息)
因为获取用户比较简单,只需要把用户名及头像地址赋值即可(也许理解错误,如果发现请告知谢谢), 首先将src\api\usr.js中的url请求地址改为以下代码 export function getI ...
- es6语法中promise的使用方法
Promise是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Pro ...