Eolink
前段时间有个国产化的API工具火了。各个社区都在推Eolink的文章,身边的朋友也慢慢的把Postman换成了Eolink。起初我并没在意,直到有一天……
那天我像往常一样用Postman测试,突然发现Postman协作居然要钱,而且服务器再国外非常慢,用Eolink早就测试完的同事,下班时路过旁边开始安慰(嘲讽)我:“大人,时代变了,大家都换成国产化啦”。
由于我们公司(奇安信)是Eolink的深度用户,再加上商业版Postman强盗一样的售价,最终还是卸载了Postman。
不在工作软件上花钱,是我作为打工人最后的倔强。

本着打不过就加入的原则,我也开始用Eolink。
用了一段时间后,我终于知道大家为什么都开始用Eolink了,好用是一方面,还有一个最重要的原因:Eolink专业且认真。
2022年,Eolink成为其领域唯一一家获得可信云认证的云服务提供商,作为国内最大的API在线管理服务平台,其产品能力、数据保护能力是获得国家认可的,而且是国家唯一认可的。
这即在意料之外,也在情理之中。
因为Eolink不只是做一个接口测试工具,而是一个API管理平台,他们的目的,是让API成为推动业务发展的手段。
过去的每半年,Eolink都会对用户做一次访谈,他们发现,API的问题分布在不同团队中,只靠一个测试工具是根本无法解决的。
于是Eolink喊出了一个口号,那就是:做一个API管理平台。
Eolink收到了很多同行的嘲笑:“做管理平台?你以为你是淘宝吗?”
这些同行很聪明,守着自己的一亩三分地,辛勤耕耘。
Eolink经过多年的探索,根据API生命周期的需求,一步步推出了API生产、研发管理、自动化测试、监控、开放平台等一系列产品,实现了对API生命周期的全覆盖。
就这样,Eolink一步一步的吃掉了“聪明同行”的市场份额,成为国内最大的API管理平台。
看到这里,我相信你一定会对这款工具很感兴趣,接下来,我们来安装一下Eolink。
免费体验地址: Eolink 一体化研发管理平台
1)首先,点击上面的链接,进入Eolink官网。
界面简洁明了,看起来非常舒服,从这里就开始体现出国产化的优势了,最起码一眼就能看懂。
反观刚开始下载和使用Postman的时候,三年级英语水平的我,真的是用有道词典一句一句翻译出来的。
我们点击中间的下载客户端,然后双击安装即可。

2)安装成功后,扫码登录,就可以开始使用了

Eolink中提供了很多强大且高效的功能:

这里先给大家介绍一下里面我最喜欢的一个功能:文档管理。
众所周知,程序员最讨厌的两件事:
这种短期收益远低于成本的事,是个正常人都不会去干(懒得去干),更何况还有后期文档维护。
程序员的里一贯理念就是:谁开发,谁治理;谁编写,谁维护。
试想一下,你兢兢业业(一时手贱)写了一篇API文档后,同事隔三差五来找你更新维护的情景。
为了杜绝后期无休无止的维护,只能从源头上解决问题,那就是:不写文档!
没有文档,自然就不需要去维护了(狗头)。
Eolink自然想到了这一点,他们做了一个图形化的API设计界面。

可以通过模板或者数据结构来快速创建API文档。

文档里面可以记录详细的参数、示例、说明等信息。

如果你觉得手动创建比较麻烦,还可以通过其他来源自动生成API文档。

为了打破各个产品间的产品壁垒,解决协作上的问题,Eolink可以从其他工具自动抓取并生成API文档。
比如,远程读取 Swagger JSON 并自动生成API文档;或者远程读取仓库中的代码注解并自动生成 API 文档。

为了提高API文档的生成效率,Eolink还提供了IDE插件,可以直接鼠标右键生成API文档。
在 IDEA插件市场 中搜索“Eolink ApiKit”下载使用。
目前插件支持 IDEA 版本:2020.3 — 2022.3 (eap) ,支持项目级扫描和上传。
除此之外,还有一个我觉得最最实用的功能,那就是将Postman的数据,快速迁移到Eolink中。
如果你和我一样,也是从Postman转到Eolink,那这个功能,可以让你毫无后顾之忧。

当API文档变更时,可以点击右上角的通知按钮(注意,是下面那个小铃铛,不是最上面的那个),给成员发布通知事件


或者在项目管理模块,对项目里的所有API统一发布通知事件,当API发生变化的时候,就能第一时间通知项目的用户了。

在沟通方面,Eolink也是非常的人性化,点击右上角的聊天小图标,可以对API进行评论,项目中的所有人都可以看到你的评论,并且回复。

这个聊天功能还支持发送图片以及Markdown语法。

甚至还可以@组里的成员,有了这个评论功能,大家就不用在Eolink和各种聊天工具之间进行切换了。

除此之外,还有一个最核心的功能,那就是历史版本的保存和回退。点击右上角的小时钟,可以查看API的历史版本。

每一次的修改变更,Eolink都会记录并保留备份,如果哪天操作失误改错了也不用担心,点击最右边的恢复历史记录,就能恢复到修改前的版本。

Eolink还提供了很多强大的功能,比如基于代码智能生成API文档,基于API文档智能生成测试用例等等,由于篇幅所限,这里就不给大家一一介绍了,Eolink的 官方文档 中,提供了详细的使用教程,大家可以按需查询。
总的来说,这款国产API工具,确实让人眼前一亮,这份近乎苛刻的严谨态度,在那个领域中,总是显得格格不入。
如果你厌倦了手里的测试工具,不妨来试试这款国产的工具,因为他们足够认真,足够专业。
在这个越来越卷的开发环境中,即使只是一点点微小的效率提升,都有可能带来截然不同的结果。
认真,你就赢了。
免费体验地址: Eolink 一体化研发管理平台
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or