java ts流封装工具_从 Java 到 TS,阿里妈妈的接口管理一把梭
这两天看到知乎上的:后端开发完接口才给出接口文档,合理吗?引起了不少的讨论,说起来这是前后端分离普及之后带来的一个新问题,阿里妈妈前端团队比较早在业务中全面使用单页应用,对接口管理有过一些探索和积累,最后搞出了一套贯穿【后端代码 -> 接口测试 ->接口文档 -> Mock -> 前端代码与类型】全开发流程的接口解决方案,在集团(6000+阿里开发者)和社区(1w+ stars)都有广泛的使用,这里再和大家分享一下~
前后端分离带来的变化
前后端分离其实意味着:项目的分离、开发周期的分离和开发人员的分离。
我们接到一个需求,开始项目排期,前端和后端分属两个人开发,产品经理打死也不会同意前端刷着知乎等到后端开发完接口、产出文档之后再介入开发,一定是双方并行开发最后再联调的。
在两不相见的之前,提前产出的一份接口约定可以说是必需的,不然很容易就促成联调驱动开发,项目进度一拖再拖的惨案。
除了一份接口文档,前后端分离后:
对于前端,我们需要一份准确的 Mock 数据,能够让项目摆脱后端独立运行;
对于后端,我们写起接口文档有点麻烦,最好能简化,需要能自行发起 API 请求测试接口可用性;
一次录入,多次使用,接口管理就是一把梭
我们用一个接口管理工具 Rap (http://rap2.taobao.org/) 来把这些需求一把梭解决,它大概长成下面这个样子:
Rap 可以按照团队、仓库、模块来管理细碎的接口,新建一个接口可以很轻松:表格编辑、JSON 导入,甚至是 Java 集成 Swagger 全自动导入,把写文档从一道简答题变成了填空选择题,一般经历过这一点点劳动之后,后面得到的就都是便利了:Mock:Rap 会根据接口结构和 MockJS 的规则提供一个 Mock 接口,前端只要像请求线上真实接口一样请求到 Rap 就可以独立启动开发,Mock 数据可以根据规则灵活变化
接口请求:录入的接口可以直接导出到 Postman,轻松完成接口测试
离线文档:很多项目需要同时交付离线的接口文档,Rap 支持导出 docx 的文档,避免后序繁杂的工作
生成请求函数和 TypeScript 定义
在 TypeScript 兴起后,前端拥抱类型化已经是大势所趋,但是定义类型可是真的累到不行。
如果你使用 Rap 管理你的接口,配合 Rap 官方的一款工具 Rapper,就能帮你把接口的请求函数和类型信息自动生成,随时同步变更。
先在 Rap (http://rap2.taobao.org/) 建立一个仓库,在仓库里点击「生成 TS 代码」,按照步骤就可以把 Rapper 安装到项目中了
用了这货,连自己封装请求函数的步骤都省去了,直接传参调用就能拿到返回的 Promise,而且是富类型定义的,再也不怕地址写错、参数传错、返回值拿错,靠着 vscode 强大的类型提示一路点下去就行,每个字段的注释都显示得明明白白:
而且请求和返回类型可以直接复用于其他代码:
如果你用 React 和 Redux,Rapper 还有进阶的模式帮你生成接口相关套路明显的 action、reducer 代码,不用自己去处理 Redux 异步问题,帮你在全局缓存接口数据,还提供了时髦的 Hooks 取数。
import { useResponse } from 'model/rapper'
const [responseData, { id, isPending, errorMessage }] = useResponse['GET/adgroup/price/update$']()
Rapper (https://github.com/thx/rapper) 的出现使这套体系完整贯穿了后端代码 -> 接口测试 ->接口文档 -> Mock -> 前端代码与类型的全开发流程,写得更少,做得更多了。
总结
回到最开始有关于编写接口文档的争论,实际上我们这些手段降低录入的工作量,并把接口数据尽可能地结构化管理,一份数据充分流转满足多方需求,当这个数据能服务于前端、后端乃至测试同学时,每个人都有足够的动力维护这份【文档】的准确,扯皮也就不存在了。
资料
对 Rap 感兴趣的朋友向下看 ️:
Rap 官方部署版本(托管了 10w+ 仓库):http://rap2.taobao.org/
Rap 同时也提供 Docker 私有部署,请移步仓库(欢迎留下star):https://github.com/thx/rap2-delos
Rap 钉钉服务群, Rap 的开发者都在这里:11789704
在 https://mux.alimama.com/ 可以了解到 MUX 的更多产品和用户体验相关的研究报告
java ts流封装工具_从 Java 到 TS,阿里妈妈的接口管理一把梭相关推荐
- java文件流插入数据库_使用Java流查询数据库
java文件流插入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写一行SQL(或类似的语言,例如HQL),而无需花费数小时将所有内容放在一起. ...
- java对象流读取完毕_从Java 8流中获取具有最大频率的对象
我有一个带有city和zip字段的对象,我们称之为Record. public class Record() { private String zip; private String city; // ...
- java对象流保存表格_使用java对象
<21天学通Java(第7版)>-- 1.3 对象和类 本节书摘来异步社区<21天学通Java(第7版)>一书中的第1章,第1.3节,作者: [美]Rogers Cadenhe ...
- java反序列化流建立失败_关于java:处理dubbo反序列化失败的坑
前言 今天下午,当我通过一个小时的奋"键"疾"码",筹备好好的审查一下(摸鱼)本人写的代码,通过一段时间审查(摸的差不多了,该上班了),得出一个论断我写的代码很 ...
- java用流实现复制功能_【java】IO流 实现简单的复制功能
package ioTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream ...
- 简述java对象的封装特点_简述Java面向对象三大特征:封装、继承、多态
前面是一个引用类型变量后面是一个类,用于判断前面的对象是否是后面的类的实例,如果是返回true,若不是返回false,避免了ClassCastException. public interface A ...
- java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流
IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...
最新文章
- 浅谈身为小白学习Linux系统的四点实用建议
- 关闭swap的危害——一旦内存耗尽,由于没有SWAP的缓冲,系统会立即开始OOM
- Function in loop and closure
- Matlab GUI 基础(2):M文件
- odoo tree视图 当页不弹窗显示方法
- Java中List详解
- 「推荐系统」 领域的最新进展你知道么?
- 十三、Tomcat的WebSocket支持
- SAP Data Intelligence上的Python Operator
- UML和模式应用5:细化阶段(5)---系统顺序图
- eclipse下tomcat临时目录位置
- MFC工作笔记0005---::在vc++中是什么意思
- sudo: no valid sudoers sources found,quitting
- 跨境电商一件代发和专线小包是什么意思?有什么区别?
- m_sequencer和p_sequencer
- 怎么看python是64位还是32位_怎样查看python是64位还是32位
- 操作系统——精髓与设计原理(第九版)
- 【算法与数据结构】——乘法逆元
- Linux零拷贝技术
- Routeros封Vagaa教程(转)
热门文章
- 考研这么卷,换条路试试​?互联网IT校园招聘信息大全!
- Echarts水滴图
- JDK8 到 JDK17 各个版本的重要特性一览
- 微信开工具报getLocation:fail, the permission value is offline verifying
- 2016年年终报告总结
- 对象上下文语义分割:OCR论文笔记(Object-Contextual Representations for Semantic Segmentation )
- excel 两日期相减
- net share c$=c: 发生系统错误
- 类和对象(Java)
- Centos7.5 -Vim编辑器和恢复ext4下误删除的文件-Xmanager工具