进阶体验:5个方面解锁Eolink高级玩法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 进阶体验:5个方面解锁Eolink高级玩法

前言

大家好我是路飞,上一篇文章 Eolink — 一站式API协作平台 向大家介绍了关于 Eolink 的产品特性、定位,以及作为API管理工具的一些基础用法(API文档生成、MOCK服务、API配置等)。那么本篇文章,就来带大家体验下 Eolink 的API文档数据导入导出、IDEA插件一键生成API文档、API并行测试等扩展功能的玩儿法。

Eolink:https://www.eolink.com/

在介绍Eolink扩展功能之前,我们通过一张图简单对比下Eolink和国外API主流测试工具Postman的差异:

相比于Postman,Eolink支持的功能更丰富,而且在UI交互、引导提示、功能扩展、数据迁移方面,Eolink要比 Postman做的更好。

作为国产API管理工具,Eolink本身就支持中文界面,不需要像Postman一样单独安装语言包插件,另外 Eolink 支持飞书、企业微信、钉钉等国内办公软件配套使用。

目前产品免费,可使用web版同时也可下载桌面端,Windows、Linux 、Mac平台均支持使用!

体验地址:Eolink专为开发者设计的免费 API 协作平台

下面我们从5个方面体验下Eolink的强大功能:

玩法一:Eolink IDEA插件全代码注释自动生成API测试用例

1、插件安装

打开IDEA插件商店搜索:

  • Generate EolinkerDoc
  • Eolink ApiKit

2、插件配置

打开IDEA setting,搜索Eolink:

这里需要配置4个参数:

  • Server:服务器地址(自己的Eolink控制台域名)。
  • SpaceKey:空间Key。
  • ProjectHashKey:项目hashKey,唯一标识一个独立的项目空间。
  • Token:登录用户身份标识,就是我们首次注册时分配的注册账号。

那么,这4个参数从哪里获取呢?

首先访问Eolink官网:https://www.eolink.com/,从官网入口进入Eolink产品控制台~


Token 登录用户身份标识获取:

将上面步骤中获取的参数,添加到Eolink IDEA插件配置中,即可完成Eolink API工作台和IDEA的绑定。

3、API 文档一键生成

完成1、2两步骤配置后,就可以通过Eolink IDEA插件一键生成API测试用例,并同步到Eolink控制台个人空间。

为了演示方便,拿一个之前项目中的Controller接口测试效果,源代码如下:

/**

* @描述 文章分类相关操作的Controller接口

* @作者 天天发呆的程序员

* @创建时间 2022-06-04

*/

@RestController

@RequestMapping("/category")

@CrossOrigin

public class CategoryInfoController {


   @Autowired

   private CategoryInfoService categoryInfoService;


   /**

    * 获取文章分类列表

    *

    * @return

    */

   @GetMapping("/list")

   public JsonResult getCategoryList() {

       List<CategoryInfoVO> categoryList = categoryInfoService.getCategoryList();

       return JsonResultBuilder.success(categoryList);

   }


   /**

    * 新增文章分类

    *

    * @param params 前端提交的创建文章分类的表单参数

    * @return

    */

   @PostMapping("/add")

   public JsonResult addCategory(@RequestBody JSONObject params) {

       String categoryName = params.get("categoryName").toString();

       String description = params.get("description").toString();

       Integer status = Integer.valueOf(params.get("status").toString());


       // 发布文章分类之前进行查重校验

       CategoryInfo categoryInfoTemp = categoryInfoService.getCategoryByName(categoryName);

       if (categoryInfoTemp != null) {

           return JsonResultBuilder.error("该文章分类已经存在!");

       } else {

           // 新增文章分类

           CategoryInfo categoryInfo = categoryInfoService.addCategory(categoryName, description, status);

           return JsonResultBuilder.success(categoryInfo);

       }

   }


   /**

    * 获取文章分类id集合

    *

    * @return

    */

   @GetMapping("/ids")

   public JsonResult getCategoryIds() {

       List<Map<Integer, String>> categoryIds = categoryInfoService.getCategoryIds();

       return JsonResultBuilder.success(categoryIds);

   }

}

我们在CategoryInfoController类中有件生成Eolink API Doc:

点击执行后,会自动在该接口类中生成Eolink相关java doc注释:

注意java doc中 eo.groupName要填写自己在Eolink工作台项目空间的分组,如果不填默认将API文档生成到默认分组中。

4、API文档上传/更新

步骤3完成后,就可以将我们的API DOC一键上传到Eolink的API管理工作台了:

上传之后就可以在Eolink控制台看到我们的API测试用例了:

Eolink API请求测试支持多种数据格式:

  • FORM表单
  • JSON请求体
  • XML
  • RWA
  • Binary等

上面4步骤,就是Eolink IDEA插件使用的一个完整流程,我觉得这个插件要比我们手写Swagger注解,然后SwaggerConfig配置扫描Controller路径,运行后端服务之后,访问swagger-ui.html要方面的多,流程也简洁的多!

玩法二:基于Swagger/git代码仓库地址自动生成API文档

Eolink不仅支持通过IDEA插件快速生成API文档,也可以将项目中原有的Swagger API文档一键同步到Eolink API管理空间,下面继续来看一个Swagger API文档导入Eolink的案例:

  • 示例工程:

SwaggerUI配置:

package com.hs.store.commons.config;


import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/**

* Swagger2API文档的配置

*/

@Configuration

@EnableWebMvc

@EnableSwagger2

public class Swagger2Config implements WebMvcConfigurer {

   @Bean

   public Docket createRestApi(){

       return new Docket(DocumentationType.SWAGGER_2)

               .apiInfo(apiInfo())

               .select()

               //为当前包下controller生成API文档

               .apis(RequestHandlerSelectors.basePackage("com.macro.mall.tiny.controller"))

               //为有@Api注解的Controller生成API文档

//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))

               //为有@ApiOperation注解的方法生成API文档

//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

               .paths(PathSelectors.any())

               .build();

   }


   @Override

   public void addResourceHandlers(ResourceHandlerRegistry registry) {

       registry.addResourceHandler("/**").addResourceLocations(

               "classpath:/static/");

       registry.addResourceHandler("swagger-ui.html").addResourceLocations(

               "classpath:/META-INF/resources/");

       registry.addResourceHandler("/webjars/**").addResourceLocations(

               "classpath:/META-INF/resources/webjars/");

       WebMvcConfigurer.super.addResourceHandlers(registry);

   }\



   private ApiInfo apiInfo() {

       return new ApiInfoBuilder()

               .title("SwaggerUI演示")

               .description("mall-tiny")

               .contact("macro")

               .version("1.0")

               .build();

   }

}

Demo Controller接口:

@Api("订单接口")

@RestController

@RequestMapping("/order")

public class OrderController {


   @Resource

   private OrderService orderService;


   @ApiOperation("/查询用户订单")

   @GetMapping("/findByOrderId")

   public Map<Order,OrderUser>findByOrderId(Long orderId){

       return orderService.findByOrderId(orderId);

   }


   @ApiOperation("/查询所有订单与用户信息")

   @GetMapping("/findAll")

   public List<Map<Order,OrderUser>>findAll(){

       return orderService.findAll();

   }


   @ApiOperation("/查询所有订单")

   @GetMapping("/findList")

   public List<Order> findList(){

       return orderService.findList();

   }


   @ApiOperation("/根据id删除订单")

   @DeleteMapping("/deleteOrderById")

   public int deleteOrderById(Long orderId){

       return orderService.deleteOrderById(orderId);

   }

}

项目启动后自动生成swaggerUI接口文档:

在Eolink工作台,点击【其他】,选择【API文档生成】,导入Swagger API文档配置并生成新的Eolink API文档:

添加API来源:(除了试用Swagger URL方式外也可以基于Git仓库生成API文档)

输入Swagger.JSON URL地址后,即可添加成功,点击同步,自动生成接口文档:


示例效果如下图所示:

上面演示的案例是基于Swagger文档同步生成Eolink API文档,当然Eolink也支持多种文档源导入(例如GitHub/GitLab/Gitee等)。

接下来我们继续了解Eolink的第三个两点功能:API并行自动化测试:

玩法三:API并行自动化测试

Eolink很大程度上可以降低接口测试的成本提高测试效率,尤其是一键式并行自动化测试,是目前Postman等API管理工具所不具备的。

此外,Eolink同时支持多种协议的接口请求测试。这个我认为是目前用过的API测试工具中做的最好的,支持多协议请求,非常适合网关中间件程序员日常测试需求,市面上大多数API测试工具对gRpc/Rpc的支持都做得不是太好。

  • API自动化测试入口:

  • 并行API自动化测试:

  • 点击单个API测试结果,可查看测试用例执行详情:

另外还有一个很方便的功能,可以下载测试报告,离线预览(尤其是对于经常需要做大促压测的团队,这个可以作为压测报告使用~)

  • 测试结果回归、API用例大盘:

目前,很多公司都在推测试覆盖率,相比于写一个接口就需要新加一个单元测试用例,直接使用Eolink生成测试回归用例,后续可以反复调试。对于需要进行大版本升级的系统,直接使用Eolink集成自动化测试,就可以在上线发布之前,提前定位接口BUG。

玩法四:支持多平台数据导入导出

Eolink提供了一键导入功能,用户可以将以前用postman/apiofx/postapi等工具测试的接口文档从导出为json格式,并一键录入到Eolink。

举Apifox为例:

导出之后会生成一个xxx.json文件,我们将这个文件导入Eolink即可一键同步API接口数据:

导入成功后会在项目空间中生成其他平台导入的API项目文件夹:

  • 此外Eolink也支持传统的CURL/HTTP/Shell命令录入接口

curl代码如下:

curl --location --request POST 'http://127.0.0.1:80/onepiece/user/login?username=%3Cusername%3E&password=%3Cpassword%3E'

录入curl请求代码即可同步该API接口

此外Eolink也支持多种其他语言脚本:包括 JS、NodeJS、PHP、Java、GO、Ruby、Python等等。

玩法五:Eolink微服务网关

Eolink平台提供了企业版微服务网关解决方案:

GoKu API Gateway

现在可以免费申请试用:https://www.eolink.com/product/api_gateway/?utm_source=kol&utm_medium=csdn&utm_content=w4602

Goku API Gateway (中文名:悟空 API 网关)是 EOLINKER 旗下基于 Golang 开发的微服务网关,能够实现高性能 HTTP API 转发、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行 API 服务治理、提高 API 服务的稳定性和安全性。

  • 主要功能包括:(企业版)

功能

描述

水平扩展

多集群、多节点

容器部署

支持通过容器(Kubernets等)动态扩展

路由

Header、Query、Location(Location指标类似Nginx的Location)

协议

HTTP、Webservice

数据处理

请求参数、返回参数处理的增删改或组装,返回数据格式可转成JSON或XML

多租户

多个访问策略

服务编排

一次请求,多次转发,重新组装返回数据

服务发现

支持对接Eureka、Nacos、Consul

负载均衡

根据权重

健康检查

转发列表自动剔除异常后端,后端正常再恢复转发

用户鉴权

匿名、Basic、Apikey、OAuth2.0、JWT、OAuth2+ 第三方认证服务器、AK/SK认证

流控控制

粒度可达API级别

格式转换

请求与响应内容的 XML 与 JSON 互相转换

熔断API

熔断单个API

服务降级

给某个API进行服务降级

灰度发布

金丝雀发布

SSL证书

管理多个证书

访问域名

为网关配置域名

API监控统计

监控数据输出到控制台,提供图表(请求数、响应时间等)查看;也可对接 Prometheus、Graphite 等第三方组件

API告警

告警粒度最细可达API级别,可发送告警邮件,也通过Webhook对接企业内部通知系统、短信API等

日志分析

全面的请求日志、节点日志和控制台日志,方便排查问题和做统计分析,支持输出日志内容到 Prometheus、Graphite等第三方组件

节点异常自启

节点异常重新拉起,并产生告警

Redis告警

自动监控Redis,异常则产生告警

用户权限

给不同的用户添加不同模块的操作权限

插件化

基于Golang自行开发插件

常用插件

流量控制、Basic鉴权、Apikey鉴权、OAuth2.0鉴权、JWT鉴权、OAuth2.0第三方认证、AK/SK认证、IP黑白名单、跨域、防重放攻击、返回头部、默认返回、参数映射、额外参数、熔断、服务降级、请求大小限制、数据缓存、请求xml/json转换、响应xml/json转换

其他

OPEN API

  • GoKu产品架构图

此外GoKu也提供了一个开源版本的供开发者免费学习和使用:

Apinto API Gateway

Apinto 是专门为微服务架构设计的开源 API 网关,完全由 Go 语言开发,拥有目前市面上最强的性能及稳定性表现,并且可以自由扩展几乎所有功能模块。 提供丰富的流量管理、数据处理、协议转换等功能,例如动态路由、负载均衡、服务发现、熔断降级、身份认证、监控与告警等。

开源版Apiinto和Nginx以及Mashape开源网关中间件Kong性能对比:

总结

Eolink无论是在功能丰富度还是用户交互体验上,相比于Postman等API辅助开发工具都有了极大的提升。希望类似的国产辅助开发产品越来越多。

另外,使用功能强大的辅助开发工具,可以使每个程序员都能在工作中把更多的精力投入到小而精美的技术开发上,繁琐枯燥的重复性工作交给辅助开发工具和组件去处理。我认为后端开发不只是CRUD,如果有兴趣也欢迎大家一起来研究和学习下相关的网关中间件产品研发和开源版本学习:

Apinto基于golang开发的API网关开源项目 https://github.com/eolinker/goku_lite

Java网关开源项目,大名鼎鼎的Gateway(静态配置网关,可以研究下如何在这个轮子基础上改造出一款支持动态配置的运行态网关中间件):https://gitee.com/mirrors/spring-cloud-gateway


最后:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
移动开发 程序员 编译器
三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】
IVX是一门人人都能快速掌握的可视化编程语言
118 0
|
3月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
300 0
|
4月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
130 0
|
4月前
|
算法
互动游戏解决遇到问题之开发同学是如何实现小鸡移动的
互动游戏解决遇到问题之开发同学是如何实现小鸡移动的
|
4月前
|
移动开发 前端开发 JavaScript
UniApp H5项目大揭秘:高效生成与扫描二维码的终极策略,让你的应用脱颖而出!
【8月更文挑战第3天】UniApp让开发者能以Vue.js构建跨平台应用。在H5项目中,通过第三方库如qrcodejs2可轻松生成二维码,代码简洁易集成;或用Canvas API获得更高灵活性。扫描方面,H5+ API适合App环境,而纯H5项目则需前端库加后端服务配合。不同方法各有优势,应按需选择以优化体验。
320 0
|
5月前
|
人工智能 运维
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
|
7月前
|
小程序 JavaScript 前端开发
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
172 1
|
7月前
|
小程序 前端开发 JavaScript
(保姆教程及高级玩法及坑)微信同声传译插件-语音识别
(保姆教程及高级玩法及坑)微信同声传译插件-语音识别
433 0
|
7月前
|
数据处理 语音技术
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
84 0