干掉 Swagger UI,这款神器更好用、更高效!

事情是这样的:今天我们公司的后端说他接口写完了,并分享了一个接口文档给我。用的就是 Swagger UI 自动生成的那种接口文档,就像这种:

a9b023d8dfb97b84910f4e68bf4455ad.png

这种 Swagger UI文档我每次看着就头大,毛病多多

  • 查看多级模型时要一级级点开

  • 在接口数量变多的时候非常难用,连分类菜单都没有

  • 提交参数为 JSON 的时候不能格式化

  • 参数出错的时候查找麻烦

  • 返回结果不能折叠,长得没法看

时间比较紧急,我就按照他给的文档里的参数与响应数据,写到了我的前端页面上,前端这边简单自测了一下就匆匆上线了。

上线完当晚就炸了。。

2c4f5425acc512eeaaa1073c9d783efe.gif

页面上各种接口报错:

  • 参数不存在

  • 参数类型错误

  • 接口不存在(是因为接口写错了)

老大马上过来找我俩,但是前后端各执一词:

  • 前端:我吊你,怎么你分享的接口这么多错误?

  • 后端:我吊你,你用之前不会测一测接口正不正常?

  • 前端:我为什么要测?你开发的接口,你自己不测好?

  • 后端:我怎么知道你要用什么样的数据!你要是稍微测一下接口,能有这么多事?

71c5220135ab194bcac941f48145d802.png

归根结底是个成本问题

这时候老大很冷静,阻止了我们的吵架。

791186ebfdcb0ade1dadaf44eb674d52.png

老大分析了一下这次事故的主要原因:

  • 1、后端马虎了,一些接口没有写对,也忘记调试了

  • 2、时间紧,前端没来得及完全测接口

然后老大说,这归根结底是个成本问题。要是前后端测接口都特别简单方便,你们这个问题就不存在了嘛!

你们现在用的在线接口文档,功能几乎为零。应该选一个功能更加强大的在线接口文档工具,直接在线就把接口调了,你们是不是就不会出这些问题了。

这个工具应该具备以下功能:

  • 调试功能,前端能很方便地调试接口数据

  • 代码生成功能,这样前端可以少写点代码,提高效率同时也提高了准确性

  • 接口同步功能,接口文档一定要是最新的代码信息

我们纷纷点头,是啊是啊。

8714def66e861b836fc9c328285124af.png

老大说,我最近试了一款工具,就可以零成本地解决你们这些问题!

然后他给我们看了一个神仙文档。

就是这个!!⬇️⬇️⬇️

ce9ed7ae62cb39a57899c6d59f865381.png

为什么说它神仙呢?因为它满身都是牛逼到不行的特性,比平常见到那些 API 文档不知道高到哪里去了。

502c98cf4e487c996dd7ef936e6814dc.png

在线调试

这个文档是用 Apifox 做的,我之前有试用过这个工具,完全免费不限功能的,没想到最近又有这么多厉害的新功能出来了。

点击文档右上角的运行按钮,就会出现“在线运行”的模块

a2b3824b1650cead1fb7bf8a7d8af128.png

这个界面上就能直接调试接口了!直接 1. 填参数,2. 选环境,3. 点发送,接口请求就发出去了!下面就有返回结果!根本用不着 Postman!更不用把 API 照着抄一遍!

d72bcd51302e08047ae4f9a8de53f0b2.png

我心想,如果当时上线之前,用的是 Apifox 的话,那简直是不会出现事故:

  • 参数不存在?我在线调试后获得数据了,通过比对我知道哪个参数不存在

  • 参数类型错误?同样的,在线调试之后,通过比对,我知道哪个参数的类型是错的

  • 接口不存在(是因为接口写错了)?调试的时候就报接口不存在了,第一时间找后端~

fb2c873c4ddf20b7f2b9f61a27287457.png

自动生成

我跟老大说,这个功能看起来是很强大啊。可是要是上线时间紧,谁有功夫去搞这么个接口文档啊,配置起来应该很麻烦吧?

老大邪魅一笑。

07e53824df1809b165c23f940e86265d.png

他说,这个文档,是自!动!生!成!的!

只要把 Swagger 的 URL 填到 Apifox 里面去,Apifox 就会自动导入 API 定义,然后就能生成这个好用的文档!

后端随便改代码,前端随时可以在线调试!

41d8b3ff2a30a38110f6c535c62d914c.png

而且,还可以导入多个来源的 Swagger!一套接口文档来自多个不同的后端项目也没问题!

038681c63a040b5ffe67c021178fa03a.png

生成请求代码

后端说,不就是一个在线调试接口吗,也没有到神仙的地步嘛。

老大说,你还是太年轻。

e4429a5453d58c8189cf1747ebe05821.png

在这个在线文档页面上,还有一行熟悉的 icon。这是什么呢?

c7943e9e6470ea4b2f833bca7fdf494b.png

自!动!生!成!代!码!

点击对应的语言,就能直接生成请求的代码!???

我选择了 JavaScript 之后,居然还提供了 Fetch、Axios、Jquery 等等请求方式的代码???

4598f0da3775f951683fe42e509fe11b.png

我直接 copy 一下代码,粘进代码里就能用???

一个在线文档,卷成这样至于嘛???

30dc4396b0805f88aeea2ec30e6279f9.png

生成模型代码

老大说,别急,还没完。

64ab1a26edb537c4472f1b49cc0e586a.png

API 文档嘛,都会有个“返回响应”的模块,就是告诉你后端吐出来的数据是什么类型什么长度等等。前端再写个数据结构把这些数据接着,然后放进页面里去。

在这个神仙文档里呢,“返回响应”里也有个“生成代码”

e09f677975dbb925149f3f5bd5fe2d1d.png

我点了一下,就弹出了这个框:

a759ca2cb994502bfced017780096b9c.png

左边还可以选择你生成代码的配置,包括:编程语言、命名风格、校验开启等等。

我看了看,Java,C,C++,JS,Swift,Go,Python,TypeScript……基本上我知道的语言全都有。

怎么着?返回数据结构的代码也不用写了?复制一下粘过去就行了?

我默默翻了翻它自动生成的代码,又关上了。

我感觉我自己写的 Java 代码还没它自动生成写的好。

7db79a51c66cec062111e29a8040e3d5.png

云端 Mock

我说老大,我明白了。我这就去下载 Apifox,下个迭代我就用这个在线文档。哦不,下个迭代我就逼后端用这个在线文档。

老大说,急什么。等我说完。你知道云端 Mock 吗?

我说,云嘛,神仙都是要驾云的,这很正常。

老大说你正常一点。云端 Mock,就是在 API 文档页面上就直接实现 Mock 服务,虚拟一个服务端出来。

我:???

8636ab2e2ab6a30a076a41a64e49bd43.png

老大说,比如,我们要请求一个银行的 API,银行肯定不会让你随便请求啊,都是要验证身份限制次数的。用这个 Apifox 呢,你就可以直接在接口文档上请求 Mock 数据了,也不会限制你的次数,也不会收你的钱。

我说老大,咱们是不是跳得有点快。你驾云我跟不上的。

老大说没有啊,我们不是在聊这个在线文档的特性嘛。你看,这里有测试环境、正式环境和云端 Mock 环境,你只要切换到云端 Mock 环境,请求就会发给 Mock 服务器了,跟正式环境调试一样一样的。

21c724f4516e4484ca09c1803c4d1a11.png

我:!!!!!

还可以这样??

老大又用浏览器打开了这个 URL(https://mock.apifox.cn/m1/1035644-0-default/users/2),说你看,直接访问 URL 就能获取到 Mock 数据了,你们前端用起来是不是很爽?

e2689999d2abdbd27b1aaeb262bcc75a.png

我猛点头。

c1aeb5820fc7913a1165ccc84e37b843.png

这个时候,后端说,那是不是我们直接把常用的那些第三方 API 都做成这种能云端 Mock 的 API 文档,然后开发就都能直接调试第三方接口了?连 Mock 服务器都不用架?

我:

1e4c34f7d5d4d5cd7355148a7c532a8b.png

API Hub

老大说,你们啊,too young too simple,sometimes naive.

给你们看个东西。

4701277aff179b5184db508ef0800bf0.png

这个,叫做 API Hub。

bdceb33ba06d723464c10b3b19d32067.png

在 Apifox 里面,已经把这些最常用的第三方 API 都做好了!即时通讯的,电商的,查快递的,项目管理的,统统都有!每一个都可以在线运行生成代码!也可以克隆到自己的项目里,然后用云端 Mock

ca70806e6b11394585fd78094dc2e33e.png
企业微信的 API 文档,可以在线运行

老大说,人家都把接口文档公开出来了,你们也好好学学人家大厂的接口是怎么设计的。哦对了,咱们公司有接口要公开出去的话,也可以发布到这个 API Hub。

d992206b240cbe2e29da569da3b7ca40.png

老大说,好了,我说完了。你们都听懂了吗?

我说,懂了,明天就去跟后端对线。

e5455f6d98aebdf85ce318f362556d69.png

后端说,等什么明天!我现在就要!

Apifox

最后,老大语重心长地说,年轻人啊,还是要多学学先进技术和工具。

Apifox = Postman + Swagger + Mock + JMeter。集接口文档工具、接口 Mock 工具、接口自动化测试工具、接口调试工具于一体,提升 10 倍研发效率。

7f98c4a311883b3a6e770f7b4873fea2.png

在这些核心功能之外,Apifox 还提供了大量创新的围绕 API 的扩展特性,适合各种规模的开发团队使用。

c531678d685e79545a1a6ee7ccae0b5a.png

而且我看他们官方还有预告,后续会支持更强大的文档功能,包括自定义域名、自定义导航、多主题样式选择、自定义 css、自定义页面等等等等,你们都要关注一下。

要是使用过程中有问题的话,还可以加入 Apifox 用户群提问和学习。

990816d8e06c3a446a05fabd62a33ab1.png

赶紧点击“阅读原文”去下载吧

下载链接:http://apifox.cn/a1jzwsq1

或者,复制上面链接,去官网下载吧

7c12e090aa8d2fcb387544a6bd49c057.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android UI ActionBar功能-ActionBarProvider的使用

分享功能是很多App都有一个功能,ActionBarProvider可以实现分享功能: 3.0以前的版 本和3.0以后的版 本的区别: public class MainActivity extends Activity {private ShareActionProvider provider;Overrideprotected void onCreate(Bundle …

面渣逆袭:MyBatis连环20问,这谁顶得住?

大家好,今天我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧。基础1.说说什么是MyBatis?MyBatis logo先吹一下:Mybatis 是一个半 ORM(对…

高并发下如何防重?

前言最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。追查原因之后发现,这个事情没想象中简单,可以说一波多折。1. 需求产品有个需求:用户选择一些品牌,点击确定按钮…

面试突击55:delete、drop、truncate有什么区别?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,而三者的用法和使用…

大厂也在用的 6种 数据脱敏方案,别做泄密内鬼

最近连着几天晚上在家总是接到一些奇奇怪怪的电话,“哥,你是 xxx 吧,我们这里是 xxx 高端男士私人会所...”,握草,我先是一愣,然后狠狠的骂了回去。一脸傲娇的转过头,面带微笑稍显谄媚&#xff…

在Python中使用OpenCV裁剪图像

What is Cropping? 什么是播种? Cropping is the removal of unwanted outer areas from a photographic or illustrated image. The process usually consists of the removal of some of the peripheral areas of an image to remove extraneous trash from the…

面渣逆袭:RocketMQ二十三问

1.为什么要使用消息队列呢?消息队列主要有三大用途,我们拿一个电商系统的下单举例:解耦:引入消息队列之前,下单完成之后,需要订单服务去调用库存服务减库存,调用营销服务加营销数据……引入消息…

Java日志性能那些事(转)

在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?…

33岁程序员的年中总结

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)人生在不同的阶段会有不同的生活方式和思考问题的角度,这是一件非常有趣的事~ 比如,我在 22 岁会想&…

数据科学中的简单线性回归

简单线性回归 (Simple Linear Regression) A simple regression model could be a linear approximation of a causative relationship between two or additional variables. Regressions models are extremely valuable, as theyre one in every of the foremost common ways…

鹅厂一面,有关 ThreadLocal 的一切

1. 底层结构ThreadLocal 底层有一个默认容量为 16 的数组组成,k 是 ThreadLocal 对象的引用,v 是要放到 TheadLocal 的值public void set(T value) {Thread t Thread.currentThread();ThreadLocalMap map getMap(t);if (map ! null)map.set(this, valu…

面试突击58:truncate、delete和drop的6大区别!

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在 MySQL 中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行…

智力游戏

【Description】whitecloth 最近迷上了一个你小时候已经玩厌了的游戏:移火柴棒。他现在吵着要你陪他玩,你没有办法,只好写一个程序来完成这个工作了。你被给出了一个火柴拼成的等式,比如说下面这个:( 5 7 …

面渣逆袭:MySQL六十六问!建议收藏

基础MySQ Logo作为SQL Boy,基础部分不会有人不会吧?面试也不怎么问,基础掌握不错的小伙伴可以跳过这一部分。当然,可能会现场写一些SQL语句,SQ语句可以通过牛客、LeetCode、LintCode之类的网站来练习。1. 什么是内连接…

try-with-resources 中的一个坑,注意避让

小伙伴们好呀,昨天复盘以前做的项目(大概有一年了),看到这个 try-catch ,又想起自己之前掉坑的这个经历 ,弄了个小 demo 给大家感受下~ 😄问题1一个简单的下载文件的例子。这里会出现什么情况…

第 二 十 八 天 :LB 负 载 均 衡 搭 建 之 LVS

小Q:抱怨,是一种负能量,犹如搬起石头砸自己的脚,与人无益,于己不利,于事无补 前面我们介绍了HA高可用集群,今天我们来了解下LB负载均衡集群,在学习完基本的搭建后,在扩展…

一个依赖搞定Spring Boot 配置文件脱敏

经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢?今天介绍一种方案,让你在无感知的情况下实现配…

js ‘use strict’详解

2019独角兽企业重金招聘Python工程师标准>>> 一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 …

如何优雅的写 Controller 层代码?

本篇主要要介绍的就是controller层的处理,一个完整的后端请求由4部分组成:1. 接口地址(也就是URL地址)、2. 请求方式(一般就是get、set,当然还有put、delete)、3. 请求数据(request,有head跟body)、4. 响应数据(response)本篇将解…

面试突击60:什么情况会导致 MySQL 索引失效?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景。…