不仅仅是一把瑞士军刀 —— Apifox的野望和不足
声明:本文内容不涉及任何 Apifox 的功能介绍,一来网上这方面的文章已经汗牛充栋,二来 Apifox 本身的用户体验做的非常好,对于开发者而言学习成本基本为零。
阮一峰:不管你是前端开发还是后端开发,只要项目是服务架构,它可能会大大提升你的开发效率。
虫师:我们很难把它描述为一款接口管理工具或接口自动化测试工具,它增强了团队协作能力,这对一个研发团队而言很重要。
池建强:Apifox,这是一代更比一代强。
什么是Apifox?
看了一众大咖们对 Apifox 赞不绝口,你可能会好奇 Apifox 究竟是何方神圣?根据官方定义,Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter。如果你也曾使用过 Apifox,相信你会深表赞同。
111.webp
那么问题来了,在盛行小而美的 API 工具的当下,为什么会横空出世一个“瑞士军刀”般存在的 Apifox?答案就在 Apifox 的宗旨里面:节省研发团队的每一分钟。
在 Apifox 之前,为了达成对 API 语义的理解和实现上的一致性,前端、后端、测试使出十八般武艺,定义 API 用 Swagger,生成文档用 YAPI,前端自测用 Mock,接口测试用 Postman,性能测试用 JMeter,各类配置、数据、链接满天飞,重要的事情说三遍啊说三遍。有了 Apifox 之后,前端、后端、测试之间原本去中心化的 P2P 通讯方式变成以 Apifox 为中心的星型通讯方式,通讯对象从原本充满不确定性的人,变成稳定可靠的平台,各类配置、数据、链接也有了统一管理的地方,团队通讯成本和 API 管理成本大幅降低。
2222.webp
Apifox的野望
如果你认为一体化协作平台就是 Apifox 的一切,那你可能低估了 Apifox 的野心。
先来看下 Apifox 的收费模式,
33333.webp
是的,你没有看错,免费版即享“无任何限制”,不限团队人数、不限功能、不限项目数、不限接口数,如此奢华的免费套餐,放眼全网也很难找到第二家(SaaS 平台)。
再来看下更新日志,留意以下更新:
- [2021-03-14] 1.2.0 新增【在线分享接口文档】功能。
- [2021-10-29] 1.4.10 上线 API Hub功能。1)通过API Hub查找/发现他人公开的 API 项目。2)可将项目发布到API Hub(设置为公开项目即可),允许任何人通过API Hub访问、克隆该项目。
- [2022-01-11] 1.4.17 公开项目支持通过 web 访问、运行。
看懂了吗?API Hub 才是 Apifox 真正的野望,打造开放 API 共享平台,连接各类企业级 API,加速企业商业创新,成为企业之间的“交友”平台。有了 API Hub,企业之间谈合作,见面第一句话就是:PPT is cheap, show me the API!
Apifox的不足
要配得上如此宏大的野心,在我看来,Apifox 无论是架构上还是产品功能上都还有很长的路要走。
从架构上来看,首先要做的是提升项目中模型的地位。创建完一个新项目,首先应该定义模型,然后才是接口。我们知道,模型是一个软件的骨架,是一个系统的核心。接口是系统外在能力的呈现,模型是系统内在逻辑的载体。一旦脱离了模型,接口就是无源之水,无本之木。
其次,作为接口的诞生地,Apifox 不妨制定或者倡导一些好的 API 设计规约,像 Google AIP (API Improvements Proposal),Microsoft RESTFul API Design等。
从产品功能来看,不要局限于 Postman + Swagger + Mock + JMeter 这句 Slogan,以用户为中心,添加诸如一键生成单元测试代码、自动化测试源码编辑模式等实用功能,解决更多实际 API 开发过程中的痛点。
除此之外,官方资料中似乎没有看到大规模团队协作的案例,无论是SaaS版本还是私有化部署版本,平台所能支持的团队体量大小暂时未知。
展望
借微服务之东风,Apifox 自 2020 年 12 月 28 日推出 1.0 版本以来,以其独特的集成优势、优秀的用户体验,在国内IT界一时风光无两。不过在国外,似乎知者寥寥,stackoverflow 上甚至查无此人。随着今年 2 月份 2.0 英文版的推出,相信很快会吸引众多国外开发者的目光,祝愿 Apifox 走出国门,走向世界,早日成为国产软件之光!
参考
不仅仅是一把瑞士军刀 —— Apifox的野望和不足的更多相关文章
- 全栈project师?给把瑞士军刀你去砍鬼子好不好!?
来自www.techgogogo.com 编者注:本文来自Medium前三名推荐文章,发文时已经获得高达2,125个推荐,中文版由天地会珠海分舵编译.全文对当今风靡业界的"全栈xx师&quo ...
- pathlib:处理文件路径的瑞士军刀
pathlib是python3.4中引入的模块,专门用来处理路径的.个人觉得这是一个非常非常强大的模块,可以说是处理路径的一把瑞士军刀,下面我们就来看看它的功能. 在pathlib中有一个Path这个 ...
- 从锅炉工到AI专家(8)
ImageNet 基础部分完成,从本篇开始,会略微的增加一些难度. 通常说,在解决问题的时候,大多程序员都会在网上搜索,寻找一些相似相近的案例作为参考.这个方式在机器学习领域同样有效.可惜早期的时候, ...
- JMeter(二十二)与其它工具对比(转载)
转载自 http://www.cnblogs.com/yangxia-test JMeter工具的扩展性非常好. JMeter工具是开源的.开源不仅仅意味着免费,更重要的是意味着用户可以通过开放的源代 ...
- 浅谈C、C++及其区别、兼容与不兼容
一.闲说C C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言. 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是 ...
- Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh
架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...
- Redis与KV存储(RocksDB)融合之编码方式
Redis与KV存储(RocksDB)融合之编码方式 简介 Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧.锋利.实用,特别适合解决一些使用传统关系数据库难以解决的问题.Re ...
- 在 MAC OS X 安装 ADB (Android调试桥)
什么是 ADB? Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信. 这种通信大多是在USB电缆下进行,但是也支持Wi-Fi连接. adb 还可被用来与电脑上运行的 ...
- Docker简明教程
Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...
随机推荐
- CTS,CLS,CLR
1)CTS通用类型系统(Common Type System) CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数 ...
- 4月13日 python学习总结 组合与封装
一.组合 解决类与类之间代码冗余问题有两种解决方案:1.继承 2.组合 1.继承:描述的是类与类之间,什么是什么的关系 2.组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的 ...
- Python knife 一款伪菜刀
Python knife 一款伪菜刀. 设计之初,本想只写个命令行的就可以了,但又想与众不同,想用python写代码,又不想用c#写前端(c#太卡了),万分无奈之下,找到一个替代品,Pyqt, ...
- 教你识别一些sequence的相关问题
摘要:通过一些自定义的视图或者查询语句,批量识别集群的sequence相关问题 本文分享自华为云社区<GaussDB(DWS)运维 -- sequence常见运维操作>,作者: 譡里个檔. ...
- Mybatis配置错误:java.lang.ExceptionInInitializerError
情况一:配置文件,无法被导出或者生效 修改前: 修改后: 究其原因,这是由于Maven的约定大于配置,导致我们写的配置文件,无法被导出或者生效的问题,解决方案: 在pom.xml文件中配置导出非res ...
- 一台 Linux 系统初始化环境后需要做一些什么安全工作?
1.添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号. 修改 SSH 端口不一定绝对哈.当然,如果要暴露在外网,建议改下.l 2.服务器使用密钥登陆,禁止密码登陆. ...
- spring学习一:spring入门及相关概念介绍
1:Spring的概念:(03年兴起) (1) 开源的轻量级的框架(无需复杂的环境,不依赖其他) (2) 一站式框架(Spring在javaee的三层结构中,对每一层都提供不同的解决技术: ...
- SpringMVC怎么样设定重定向和转发的?
(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4" (2)重定向:在返回值前面加"red ...
- 重载(Overload)和重写(Override)的区别。重载的 方法能否根据返回类型进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性.重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同.参数个数不同或者二者都不同)则视 ...
- Thymeleaf+Spring使用自己的工具类
第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...